var xu = 12;
var f = function () {
var b = xu;
return function() {
console.log(b);
}
}
调用f()()
在控制台上提供12
。
然后我写下面的陈述。
xu = 14;
f()();
据我所知,函数调用应该打印12
。我们不会在任何地方更改b
的值。
但输出为14
。这是否意味着赋值运算符传递变量的引用而不仅仅是值?
编辑:同样,但如果我不使用闭包,则赋值运算符不会分配引用。困惑!
答案 0 :(得分:2)
我希望以下代码可以解释:
var xu = 12;
var f = function () {
var b = xu;
return function() {
console.log(b);
}
}
b = f()
b(); // 12
xu =14
b() // 12
f()() // 14
f()() // 14
您再次调用该函数,它将获得xu
中的当前值。如果是b() // 12
,则通过闭包
答案 1 :(得分:2)
当您运行f()
时,它每次都会b
重新分配xu
答案 2 :(得分:0)
当您运行f()
时,您会将b
重新分配给xu
。除非你这样做,否则
var xu = 12;
var f = function () {
var b = xu;
return function() {
console.log(b);
}
}
f()(); // prints '12'
var c = f();
xu = 13;
c(); // prints '12'
f()(); // prints '13'