<script> //1. var foo = { bar: function () { return this.baz; }, baz: 1 }; (function () { return typeof arguments[0](); })(foo.bar); //foo.bar方法没有参数,typeof arguments[0]()为undefine //2. var f = (function f() { return "1"; }, function g() { return 2; })(); typeof f; //f=2 为number类型 //3. var i=(function () { function f() { return 1; } return f(); function f() { return 2; } })(); //i=2 //4. for (var i = 0; i < 5; i++) { (function (i) { setTimeout(function () { console.log(i); }, 1000) })(i) } //5. function f1() { var n = 999; nAdd = function () { n += 1; } function f2() { console.log(n); } return f2; } var result = f1();//返回为f2方法体 result();//执行f2方法 能访问到n 为999 nAdd();//执行nAdd方法 能访问到n 1000 result();//执行f2方法 能访问到n 为1000 </script>