两道js闭包题目;
2017-03-01 本文已影响0人
forLovn
两道面试题;
1:
function test() {
var value =2;
return function (param) {
alert(value * param);
alert(this.value * param);
}
}
value=3;
var a = test();
a(2);//4;6
解释下:一点闭包你里面的this指向window, 但当变量名相同且没有使用this关键字时,使用离它最近的那个变量;
2:
function test() {
var value =2;
return function (param) {
value *=param;
alert(value)
}
}
value=3;
var a = test();
a(2);//4
a(2);//8
解释如下:
垃圾回收是指:一个值,如果没有任何变量指向它,那么它就被回收。
你执行完一个函数,函数本身不会被回收。函数内部的变量是否回收要分情况:
如果是一般函数,没有闭包,那么函数内的局部变量就会被回收。
如果函数内有闭包,那么闭包会在函数执行完后仍然引用变量,也就是说变量不会被回收。
3:js闭包应用
<script>
window.onload=function () {
for(var i=1;i<=6;i++){
document.getElementById("div"+i).onclick=(function (value){
return function(){
alert(value)
}
})(i)
}
}
</script>