时间:2021-07-01 10:21:17 帮助过:3人阅读
let j = i; list[i].onclick = function(){console.log(j)}
在function方法,调用了块级变量j,该变量并不会被垃圾回收。每次for循环均指向不同的地址,因此触发点击事件时,可以正确打印其下标 2)采用闭包来解决。
list[i].onclick = function(i){ return function(){console.log(i)}。 }
**解读闭包
闭包就是能够读取其他函数内部变量的函数。在JavaScript语言中,只有函数内部的子函数才能读取局部变量。可以简单将闭包理解为“定义在一个函数内部的函数”。本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
注意:使用闭包会使得函数中的变量被保存在内存中,内存消耗较大,因此不能滥用闭包,将会造成网页的性能问题,在IE浏览器中可能导致内存泄漏。。结局办法,在退出函数之前,将不使用的局部变量全部删除。
借助别人的例子。供大家参考
var name = "this window"; var object = { name :"my object", getNameFunc:function () { return function () { return this.name; } } } alert(object.getNameFunc()());/弹出this window2 。此时this对象指向window对象 var object2 = { name: "my object", getNameFunc2: function () { var that = th is; return function () { return that.name; } } } alert(‘that’+object2.getNameFunc2()()); ///弹出my object。此时this对象指向object2对象
相关推荐:
简单理解JS闭包
JS闭包常见形式详解
JS闭包用法的示例代码分享
以上就是JS闭包的特性分析的详细内容,更多请关注Gxl网其它相关文章!