使用 let in 循环而不是 var(单击处理程序示例)
假设我们需要为每个 loadedData
数组添加一个按钮(例如,每个按钮应该是一个显示数据的滑块;为了简单起见,我们只是提醒消息)。有人可能会尝试这样的事情:
for(var i = 0; i < loadedData.length; i++)
jQuery("#container").append("<a class='button'>"+loadedData[i].label+"</a>")
.children().last() // now let's attach a handler to the button which is a child
.on("click",function() { alert(loadedData[i].content); });
但不是警报,每个按钮都会导致
TypeError:loadedData [i]未定义
错误。这是因为 i
的范围是全局范围(或函数范围)和循环后的 i == 3
。我们需要的不是“记住 i
的状态”。这可以使用 let
来完成:
for(let i = 0; i < loadedData.length; i++)
jQuery("#container").append("<a class='button'>"+loadedData[i].label+"</a>")
.children().last() // now let's attach a handler to the button which is a child
.on("click",function() { alert(loadedData[i].content); });
使用此代码测试 loadedData
的示例:
var loadedData = [
{ label:"apple", content:"green and round" },
{ label:"blackberry", content:"small black or blue" },
{ label:"pineapple", content:"weird stuff.. difficult to explain the shape" }
];