function f1(){
var n="tanzongpei";
return n;
}
var a=f1();
alert(a);
我这样直接返回里面的变量出来也可以呀?为什么要在里面在放一个函数,再返回里面的局部变量呢?
function f1(){
var n="tanzongpei";
return n;
}
var a=f1();
alert(a);
我这样直接返回里面的变量出来也可以呀?为什么要在里面在放一个函数,再返回里面的局部变量呢?
其实这样可能更容易理解:
js
function f1() { var n = 1; function f2() { return n++; } return f2; } var inc = f1(); var num = inc();// 1, 每调用一次inc n都会加1 var num2 = inc();// 2
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
你这样的写法,当函数运行完后,执行环境被销毁,你实际上得到的只是n这个值,之后你也无法再获取到当时函数执行时执行环境中的变量。
而图中的写法,因为返回的是函数,所以函数的执行环境不会被销毁,根据作用域链的原理,你可以使用返回的这个函数访问它的执行环境中的局部变量,而外层函数的执行环境也会保留。