在以下示例中,y如何給出1的值?我加了一些記錄,看看價值觀和不知道如何/其中y分配...瞭解Javascript函數和關閉
(function() {
function foo(x) {
var callNum = 0;
var baz = 3;
return function (y) {
callNum++;
console.log("callNum: " + callNum);
console.log("y: " + y);
console.log("baz: " + baz);
console.log("x: " + x);
console.log(x + y + (++baz));
}
}
var moo = foo(2); // moo is now a closure.
moo(1);
moo(1);
})();
這裏的小提琴輸出日誌:
callNum: 1
y: 1
baz: 3
x: 2
7
callNum: 2
y: 1
baz: 4
x: 2
8
問題應該是:「moo'裏面有什麼?」。一旦你得到了,很清楚'y'得到分配的位置;) –
你爲什麼會期望'y'不是1? – tymeJV
'y'不是「賦值」的,它被傳入函數'moo',這是'foo'返回的函數。兩次,你通過'1',所以它是1. –