猿问

自执行函数如何修改全局变量

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


鸿蒙传说
浏览 448回答 1
1回答

泛舟湖上清波郎朗

var k = true;for (var i = 0; i < 4; i++) {&nbsp; &nbsp; (function(i, k) {&nbsp; &nbsp; &nbsp; &nbsp; if (k) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(k)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(i);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k = false;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; })(i, k)}你上面的代码,k改变的是当前立即执行函数内的形参k的值,改成下面就可修改函数体外k的值var k = true;for (var i = 0; i < 4; i++) {&nbsp; &nbsp; (function(i) {&nbsp; &nbsp; &nbsp; &nbsp; if (k) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(k)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(i);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; k = false;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; })(i)}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答