大发快乐8_大发快乐8官网

JS编程建议——62:在循环体和异步回调中慎重使用闭包

时间:2020-01-16 11:16:10 出处:大发快乐8_大发快乐8官网

建议62:在循环体和异步回调中慎重使用闭包

闭包在开发中具有重要的应用价值,不可能 闭包具有持久性,生成的闭包不不立即被销毁,可是它会持续占用系统资源。不可能 极少量使用闭包,不可能 造成系统资源紧张,甚至意味着内存溢出等错误。另外,闭包在回调函数中会带来负面影响,可是在使用时应该慎重。

下面的示例利用闭包来存储变量所有变化的值。

function f( x ){

}

function e(){

}

e();

同那我闭包通过分别引用不不可以在当前环境中生成多个闭包。之类:

function f( x ){

}

function e(){

}

e(); // 调用函数e

在这个 示例中,函数f的功能是:把数组类型的参数中每个元素的值分别封放进闭包特性中,可是把闭包存储在那我数组中,并返回这个 数组。可是,在函数e中调用函数f,并向其传递那我数组(["a", "b", "c"]),可是遍历函数f返回数组,此完会 发现,数组中每个元素的值有的是“c undefined”。

那我闭包中的变量temp并有的是固定的,它会随时根据函数运行环境中的变量temp的值变化而更新,那我会意味着临时数组元素的值有的是字符“c”,而有的是“a”、“b”、“c”,一起去,不可能 循环变量i递增如果,最后的值是3, x[3]超出了数组的长度,全都结果可是undefined。

外理闭包处于不够现象的方法是:为闭包再邮邮寄邮邮寄国际包裹一层函数,可是运行该函数,并把外界动态值传递给它,这个 函数接收什么值后传递给实物的闭包函数,从而阻断了闭包与最外层函数的实时联系。

function f( x ){

}

var a = f( 150 )

var b = f( 1150 )

a( 5 ) //55

b( 10 ) //110

热门

热门标签