闭包代码问题

yangyibang yangyibang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题代码:

function f() {
var a = [];
var i;
for(i = 0; i < 3; i++) {
a[i] = function(){
return i;
}
}
return a;
}

a[0](),a[1](),a[2]()都是3.

都是为了能返回正确数组的值。代码1和代码2都可以返回[1,2,3]。书中《Object-Oriented JavaScript》为什么用代码1,而不用代码2呢?代码2不是更简洁吗?他们有什么区别呢?
代码1:

function f() {
function makeClosure(x) {
return function(){
return x;
}
}
var a = [];
var i;
for(i = 0; i < 3; i++) {
a[i] = makeClosure(i);
}
return a;
}


代码2:

function f() {
function makeClosure(x) {

return x;

}
var a = [];
var i;
for(i = 0; i < 3; i++) {
a[i] = makeClosure(i);
}
return a;
}
...全文

相关推荐

JS闭包解决循环输出问题[项目代码]

文章对这一问题的分析和提供的解决方案,对于理解JavaScript的闭包概念以及异步编程有着重要的意义。了解和掌握闭包以及事件循环机制对于编写可靠和高效的JavaScript代码至关重要。

m0n1o2p

js代码-一个for循环例子带出来的问题. 常见面试题,涉及到同步异步执行,闭包,变量作用域等问题。

在实际编程中,正确处理这些问题可以避免许多常见的错误和性能问题。阅读`main.js`文件并理解其中的代码,将有助于加深这些概念的理解,并在面试中展现出扎实的JavaScript知识基础。

weixin_38731979

【JavaScript源代码】详解JavaScript闭包问题.docx

详解JavaScript闭包问题  闭包是纯函数式编程语言的传统特性之一。通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包

mmoo_python

Javascript闭包实例详解

最后,文章总结了闭包的一些关键点:闭包允许内部函数访问定义它们的外部函数的变量;闭包的变量在函数执行完毕后仍然存在;通过返回一个函数的引用,外部代码可以访问到闭包中的变量;而要避免闭包造成的变量共享问题

weixin_38603204

js代码-1、Js练习:闭包、函数柯里化、递归综合

闭包、函数柯里化和递归是JavaScript中提高代码复用性和灵活性的重要工具。闭包能保护变量,柯里化可以创建高度定制化的函数,而递归则解决了许多复杂问题。

weixin_38743084
评论 5
收藏 已收藏
分享
返回顶部
yangyibang
JavaScript 87,984 成员 224,681 内容