var k = true;
for (var i = 0; i < 4; i++) {
(function(i, k) {
if (k) {
console.log(k)
console.log(i);
k = false;
}
})(i, k)
}
结果输出了4个 true和0,1,2,3
求解释啊。为什么不能更改k的值
var k = true;
for (var i = 0; i < 4; i++) {
(function(i, k) {
if (k) {
console.log(k)
console.log(i);
k = false;
}
})(i, k)
}
结果输出了4个 true和0,1,2,3
求解释啊。为什么不能更改k的值
这里有两个解决方法。
(1)立即执行函数内的this是window对象,因此将立即函数内的 k = false改为this.k = false,或者直接window.k = false即可;
(2)立即执行函数返回k。你要注意,JS函数传参数,有基本类型和引用类型两种情况。
var k = true;
for (var i = 0; i < 4; i++) {
k = (function(i, k) {
if (k) {
console.log(k)
console.log(i);
k = false;
}
return k;
})(i, k)
}
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
你上面的代码,k改变的是当前立即执行函数内的形参k的值,
改成下面就可修改函数体外k的值