function fn1(){
var a = 6;
function fn2(){
alert(a) ;
}
return fn2;
}
// var f = fn1();
// f() alert 6
fn1() //没有效果
如上代码,赋值给变量f能alert 6,但是直接调用fn1就没有反应。请问这是什么原理
function fn1(){
var a = 6;
function fn2(){
alert(a) ;
}
return fn2;
}
// var f = fn1();
// f() alert 6
fn1() //没有效果
如上代码,赋值给变量f能alert 6,但是直接调用fn1就没有反应。请问这是什么原理
你仔细看看 fn1,直接 fn1是有结果的啊,结果就是返回了内部函数fn2:
var f = fn1(); // f 实际上等于 fn2
f() // fn2()结果是 alert 6
// 这样结果就是 alert 6 了
fn1()()
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答895 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
因为你fn1()只执行了1次。
而你的f 在赋值的时候执行了一次函数,然后f本身又执行了一次函数,相当于执行了2次。