您的位置:首页 > Web前端 > JavaScript

JavaScript回调方法中使用外部变量出现的问题

2016-01-22 11:35 666 查看
测试用例

function cprint(str) {
console.log(str);
}

function temp() {
for(var i=0; i<3; i++) {
$("#bt"+i).click(function() {
cprint(i);
});
}
}


上边方法的目的是给三个bt绑定点击事件,预期的结果是

bt0 click: 0
bt1 click: 1
bt2 click: 2


但是执行后的结果是,点击三个按钮输出的都是3。

bt被点击后回调绑定的click中的方法,回调方法直接使用了外部变量i,而不是自己设置临时变量保存i的结果。

解决办法

function temp() {
for(var i=0; i<3; i++) {
click(i);
}
}

function click(i) {
$("#bt"+i).click(function() {
cprint(i);
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: