Discuss / JavaScript / show一波操作

show一波操作

Topic source

闭包只需要理解两个点:1、在函数内部定义函数,2、函数不调用不执行。

function count() {
    var arr = [];
    for (var i = 1; i <= 3; i++) {
        arr.push(function () {
            return i * i;
        });
    }
    return arr;
}

var result = count();
console.log(result); //[ƒ, ƒ, ƒ] ;rusult中保存了三个方法 ,三个方法都还没执行
var f1 = result[0]; // ƒ(){ return i*i;} i = 1
var f2 = result[1]; // ƒ(){ return i*i;} i = 2
var f3 = result[2]; // ƒ(){ return i*i;} i = 3
// i = 4; 方法不调用不执行!!
console.log(f1()); // 执行 i*i= 4*4 = 16
console.log(f2()); // 执行 i*i= 4*4 = 16
console.log(f3()); // 执行 i*i= 4*4 = 16

孙雾林171

#2 Created at ... [Delete] [Delete and Lock User]

我觉得他在  

var result = count(); 后i就等于4了,而不是你说的 
var f1 = result[0]; // ƒ(){ return i*i;} i = 1
var f2 = result[1]; // ƒ(){ return i*i;} i = 2
var f3 = result[2]; // ƒ(){ return i*i;} i = 3
你直接运行 results[0]() 也是16

有趣文字

#3 Created at ... [Delete] [Delete and Lock User]

闭包只需要理解两个点:1、在函数内部定义函数,2、函数不调用不执行。 这个可以有


  • 1

Reply