为什么多出来一个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 星