闭包代码问题
问题代码:
a[0](),a[1](),a[2]()都是3.
都是为了能返回正确数组的值。代码1和代码2都可以返回[1,2,3]。书中《Object-Oriented JavaScript》为什么用代码1,而不用代码2呢?代码2不是更简洁吗?他们有什么区别呢?
代码1:
代码2:
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代码至关重要。
js代码-一个for循环例子带出来的问题. 常见面试题,涉及到同步异步执行,闭包,变量作用域等问题。
在实际编程中,正确处理这些问题可以避免许多常见的错误和性能问题。阅读`main.js`文件并理解其中的代码,将有助于加深这些概念的理解,并在面试中展现出扎实的JavaScript知识基础。
【JavaScript源代码】详解JavaScript闭包问题.docx
详解JavaScript闭包问题 闭包是纯函数式编程语言的传统特性之一。通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包
Javascript闭包实例详解
最后,文章总结了闭包的一些关键点:闭包允许内部函数访问定义它们的外部函数的变量;闭包的变量在函数执行完毕后仍然存在;通过返回一个函数的引用,外部代码可以访问到闭包中的变量;而要避免闭包造成的变量共享问题
js代码-1、Js练习:闭包、函数柯里化、递归综合
闭包、函数柯里化和递归是JavaScript中提高代码复用性和灵活性的重要工具。闭包能保护变量,柯里化可以创建高度定制化的函数,而递归则解决了许多复杂问题。


