Javascript let关键字的解决方法?
我怎么能得到这个Javascript let关键字的解决方法?,javascript,let,Javascript,Let,我怎么能得到这个 var i = 0; var codes = [1, 2, 3]; for (var i = 0; i < codes.length; ++i) { setTimeout(function(){alert(codes[i]);},100); } var i=0; 风险值代码=[1,2,3]; var timeoutpunc=函数(){ 警报(代码[i++]); 如果(i
var i = 0;
var codes = [1, 2, 3];
for (var i = 0; i < codes.length; ++i)
{
setTimeout(function(){alert(codes[i]);},100);
}
var i=0;
风险值代码=[1,2,3];
var timeoutpunc=函数(){
警报(代码[i++]);
如果(i<代码长度){
setTimeout(timeoutpunc,100);
}
};
setTimeout(timeoutpunc,100);
var i=0;
风险值代码=[1,2,3];
var timeoutpunc=函数(){
警报(代码[i++]);
如果(i<代码长度){
setTimeout(timeoutpunc,100);
}
};
setTimeout(timeoutpunc,100);
使用自动执行的匿名函数并传入i
作为变量闭包的参数
var i = 0;
var codes = [1, 2, 3];
for (var i = 0; i < codes.length; ++i)
{
(function( index ) {
setTimeout(function(){alert(codes[index]);},100);
})(i);
}
var i=0;
风险值代码=[1,2,3];
对于(变量i=0;i
使用一个自动执行的匿名函数并传入
i
作为变量闭包的参数
var i = 0;
var codes = [1, 2, 3];
for (var i = 0; i < codes.length; ++i)
{
(function( index ) {
setTimeout(function(){alert(codes[index]);},100);
})(i);
}
var i=0;
风险值代码=[1,2,3];
对于(变量i=0;i
您需要使用闭包。我通常创建一个“生成器”函数,该函数返回在所需上下文中定义的函数:
var i = 0;
var codes = [1, 2, 3];
function callbackGenerator(i) {
return function(){alert(codes[i]);}
}
for (var i = 0; i < codes.length; ++i)
{
setTimeout(callbackGenerator(i), 100);
}
var i=0;
风险值代码=[1,2,3];
函数回调生成器(i){
返回函数(){alert(代码[i]);}
}
对于(变量i=0;i
这里有更多信息和好例子:
您需要使用闭包。我通常创建一个“生成器”函数,该函数返回在所需上下文中定义的函数:
var i = 0;
var codes = [1, 2, 3];
function callbackGenerator(i) {
return function(){alert(codes[i]);}
}
for (var i = 0; i < codes.length; ++i)
{
setTimeout(callbackGenerator(i), 100);
}
var i=0;
风险值代码=[1,2,3];
函数回调生成器(i){
返回函数(){alert(代码[i]);}
}
对于(变量i=0;i
这里有更多信息和好例子:
这应该可以
var codes = [1, 2, 3];
for (var i = 0; i < codes.length; ++i)
setTimeout(function(code){return function(){
alert(code);
}}(codes[i]), 100);
var代码=[1,2,3];
对于(变量i=0;i
这应该可以
var codes = [1, 2, 3];
for (var i = 0; i < codes.length; ++i)
setTimeout(function(code){return function(){
alert(code);
}}(codes[i]), 100);
var代码=[1,2,3];
对于(变量i=0;i
使用:
如果要执行以下操作,请使用命名函数:
function foo(i) {
setTimeout(function(){alert(codes[i]);},100);
}
for (var i = 0; i < codes.length; ++i) {
foo(i);
}
函数foo(i){
setTimeout(函数(){alert(代码[i]);},100);
}
对于(变量i=0;ifunction foo(i) {
setTimeout(function(){alert(codes[i]);},100);
}
for (var i = 0; i < codes.length; ++i) {
foo(i);
}
函数foo(i){
setTimeout(函数(){alert(代码[i]);},100);
}
对于(变量i=0;i这两个示例都形成了一个闭包,它引入了新的变量范围。或者,ES5提供了可以用于匿名函数的功能,但并非所有浏览器都支持它。(我在想IE。)这会导致所有3个同时关闭,这是期望的功能吗?如果不是,他可以将设置超时的延迟更改为
100*(索引+1)
这会导致所有3个同时关闭,这是期望的功能吗?如果不是,他可以将设置超时的延迟更改为100*(索引+1)