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()()
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
因为你fn1()只执行了1次。
而你的f 在赋值的时候执行了一次函数,然后f本身又执行了一次函数,相当于执行了2次。