为什么多出来一个f1()();结果不一样
function f1() {
var n = 999;
nAdd = function() {
n = n + 1;
};
function f2() {
console.log(n);
}
return f2;
}
var rs = f1();
rs();
nAdd();
rs();
function f1() {
var n = 999;
nAdd = function() {
n = n + 1;
};
function f2() {
console.log(n);
}
return f2;
}
var rs = f1();
f1()();
rs();
nAdd();
rs();
38
收起
正在回答 回答被采纳积分+1
3回答
好帮手慕粉
2020-03-17 10:30:38
“qq_慕粉9137647”同学你好,关于同学的问题回答如下:
1、在函数中,前面有var声明的就是局部变量,不能在函数外部直接进行访问。没有var声明就是全局变量,可以直接在外部进行访问。例:

控制台:

在这个里面,nAdd也是一样的,它相当于test1,可以在外部直接进行访问。
2、不调用f1函数是不可以执行nAdd函数的,因为函数不调用是不会执行的,只有调用了f1,才能执行f1函数内部的代码。
3、改变的是f1作用域下的n,执行结果不一样是因为函数调用顺序问题:

4、同学如果有问题,建议同学新建一个问答进行提问呢,这样即有利于同学后期的复习与整理,老师也能更快的看到同学的问题。
同学再理解一下。
祝学习愉快~


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星