在以下示例中,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. –