function box(){
var arr = [];
for(var i=0;i<5;i++){
arr[i]=function(){
return i;
}
}
return arr;
}
var b = box();
console.log(b.length);
for(var i=0;i<b.length;i++){
console.log(b[i]())
}上面的代码会打印出5个5
因为b[i]()调用的是匿名函数,然而匿名函数并没有自我执行,所以等到调用的时候,box()已经执行完毕。。。。
下面改一下:
function box(){
var arr = [];
for(var i=0;i<5;i++){
arr[i]=(
function(num){
console.log("ccc="+num)
return num;
}
)(i)
}
return arr;
}
var b = box();
console.log(b.length);
for(var i=0;i<b.length;i++){
console.log(b[i])
}执行结果:
Zend框架2是一个开源框架,使用PHP 5.3 +开发web应用程序和服务。Zend框架2使用100%面向对象代码和利用大多数PHP 5.3的新特性,即名称空间、延迟静态绑定,lambda函数和闭包。 Zend框架2的组成结构是独一无二的;每个组件被设计与其他部件数的依赖关系。 ZF2遵循SOLID面向对象的设计原则。 这样的松耦合结构可以让开发人员使用他们想要的任何部件。我们称之为“松耦合”
344
num=0 num=1 num=2 num=3 num=4 5 0 1 2 3 4
修改后让匿名函数自我执行,导致最后b[i]返回的是数组而不再是函数了
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号