JavaScript知识点之“函数closure ”
2012-06-05 13:42
281 查看
//觉得好像差不多可以成功的一个例子,出来的效果是点击,弹出的都是5.
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
document.body.appendChild(link);
}
}
window.onload = addLinks;
//-下面这个是正确的实现
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function () {
alert(num);
};
}(i);//!!!!!!!!!!!!!注意这里
document.body.appendChild(link);
}
}
window.onload = addLinks;
以上的例子,告诉我们1个事实:
对于绑定了事件响应的那些function,在绑定的时候,并没有执行到里面去。所以必须在绑定的时候,就把参数传进去,用到的是self-invoking的funciton,即在定义的时候已经填好参数准备调用了。如上面的注释那块。
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
document.body.appendChild(link);
}
}
window.onload = addLinks;
//-下面这个是正确的实现
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function () {
alert(num);
};
}(i);//!!!!!!!!!!!!!注意这里
document.body.appendChild(link);
}
}
window.onload = addLinks;
以上的例子,告诉我们1个事实:
对于绑定了事件响应的那些function,在绑定的时候,并没有执行到里面去。所以必须在绑定的时候,就把参数传进去,用到的是self-invoking的funciton,即在定义的时候已经填好参数准备调用了。如上面的注释那块。
相关文章推荐
- JavaScript一些小知识点的记录2之函数
- JavaScript的函数,声明变量和作用域等7个基础知识点总结
- 每天一个小知识点19(Javascript对象转换成json的函数)
- javascript知识点函数及对象的基本介绍
- JavaScript知识点总结---------005(函数与数组)
- javascript高级知识点——函数的长度
- javascript之函数作用域和闭包[function scope and closure]
- 私人定制javascript中函数小知识点
- javascript之函数作用域和闭包[function scope and closure]
- 【JavaScript知识点六】javascript 函数基础
- JavaScript中函数(函数声明,函数调用,函数表达式,匿名函数等知识点
- Javascript中函数相关知识点3(面试必备)
- javascript基础七(知识点类快速排序与函数声明函数表达式)
- Javascript 中闭包(Closure)的探索(三)-私有函数中的this
- JavaScript一些小知识点的记录2之函数2
- Javascript 中闭包(Closure)的探索(二)-私有变量和函数
- 知识点摸清 - - function()——JavaScript 函数名后什么时候加括号,什么时候不
- JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
- Javascript知识点:IIFE - 立即调用函数
- JavaScript小知识点(二):函数防抖和节流