最近在读MDN上关于JavaScript1.7的更新(感觉js更新得不是一般的快。。)
感觉let statement是个很好的工具,尤其是在循环或是if语句里面,要建立一种临时的局部变量,比scope绑定到函数的var肯定要方便很多。
然后MDN提供了这样一段代码:
var list = document.getElementById("list");
for (var i = 1; i <= 5; i++) {
var item = document.createElement("LI");
item.appendChild(document.createTextNode("Item " + i));
let j = i;
item.onclick = function (ev) {
alert("Item " + j + " is clicked.");
};
list.appendChild(item);
}
下面配上解释说,这里,j是必须的,换成var j这玩意不会有用,去掉j,直接用 i, 也不会起作用。
请问它为什么用let j=i 就可以让 j 可以在下面那个匿名函数中被调用了?(然后一个小白点的问题。。function (ev) 中的ev是啥东西,我也见过类似 function (el, index, array)。。。这东西有名字么。。能给个MDN的知识链接么)
感觉let statement是个很好的工具,尤其是在循环或是if语句里面,要建立一种临时的局部变量,比scope绑定到函数的var肯定要方便很多。
然后MDN提供了这样一段代码:
var list = document.getElementById("list");
for (var i = 1; i <= 5; i++) {
var item = document.createElement("LI");
item.appendChild(document.createTextNode("Item " + i));
let j = i;
item.onclick = function (ev) {
alert("Item " + j + " is clicked.");
};
list.appendChild(item);
}
下面配上解释说,这里,j是必须的,换成var j这玩意不会有用,去掉j,直接用 i, 也不会起作用。
请问它为什么用let j=i 就可以让 j 可以在下面那个匿名函数中被调用了?(然后一个小白点的问题。。function (ev) 中的ev是啥东西,我也见过类似 function (el, index, array)。。。这东西有名字么。。能给个MDN的知识链接么)