<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>