JavaScript新人,在看图灵丛书的《精通JavaScript》
闭包这里有个问题求解
function addGenerator(num){
return function(toAdd){
return num + toAdd;
}
}
var addFive = addGenerator(5);
function check(){
alert(addFive(4) == 9);
alert(addFive);
}在页面上点击按钮执行check()
第一个alert为true,理解
第二个alert的内容为什么是function(toAdd){return num + toAdd;}
而不是function(toAdd){return 5 + toAdd;}呢?
闭包这里有个问题求解
function addGenerator(num){
return function(toAdd){
return num + toAdd;
}
}
var addFive = addGenerator(5);
function check(){
alert(addFive(4) == 9);
alert(addFive);
}在页面上点击按钮执行check()
第一个alert为true,理解
第二个alert的内容为什么是function(toAdd){return num + toAdd;}
而不是function(toAdd){return 5 + toAdd;}呢?
弹出的就是addFive函数代码结构~·addFive = addGenerator//addFive引用addGenerator函数
所以弹出addGenerator函数内部结构
但是他是以变量的形式保存的.
所以alert出来的还是函数体中的标识num
return function(toAdd){
return num + toAdd;
}
}
var addFive = addGenerator(5);
function check(){
alert(addFive(4) == 9);
alert(addFive);
alert(typeof(addFive)); // function
}check();
你仅仅只是alert(addFive),而addFive是内部函数的引用,并没有执行,所以肯定
会弹出内部函数的源代码:
比如:function addFive(){-------;}
你上面那alert(addFive)就等于弹出我定义的这个方法一样。