js解析:预编译期(预处理、预解析、预编译) 和 执行期
当js引擎解析脚本时,它会在预编译期对所有申明的变量和函数进行处理,并且时先预申明变量,再预定义函数。
var buttons = [{name:'b1'},{name:'b2'},{name:'b3'}];
function bind() {
for(var i=0; i<buttons.length; i++) {
buttons[i].func = function() {
console.log(i);
}
}
}
bind();
buttons[0].func();//3
buttons[1].func();//3
buttons[2].func();//3
var buttons = [{name:'b1'},{name:'b2'},{name:'b3'}];
function bind() {
for(var i=0; i<buttons.length; i++) {
(function(num) {
console.log(num);//0,1,2
})(i);
}
}
bind();