Javascript函数如何给出输出5,6,7
该程序如何给出输出5 6 7 请给我解释一下密码 输出: 5. 6. 7. 未定义 代码Javascript函数如何给出输出5,6,7,javascript,Javascript,该程序如何给出输出5 6 7 请给我解释一下密码 输出: 5. 6. 7. 未定义 代码 var a=(函数(){ var x=5; 函数m(){ console.log(x++); } 返回m; }()); 函数b(){ a(); a(); a(); } b()从外部作用域引用变量的内部函数的概念称为闭包 当您调用外部函数并将其返回的函数赋给另一个变量时,该变量只声明一次。每次调用返回函数时,它都在处理和修改一个变量,该变量现在只能由返回函数引用。var a是立即调用表达式函数(IIEF)的
var a=(函数(){
var x=5;
函数m(){
console.log(x++);
}
返回m;
}());
函数b(){
a();
a();
a();
}
b()代码>从外部作用域引用变量的内部函数的概念称为闭包
当您调用外部函数并将其返回的函数赋给另一个变量时,该变量只声明一次。每次调用返回函数时,它都在处理和修改一个变量,该变量现在只能由返回函数引用。var a
是立即调用表达式函数(IIEF)的结果
在这个IIEF中,我们有一个局部变量x,用值5初始化
var x = 5;
我们还有一个函数m,它将x的值输出到控制台,然后将x的值加1:x++
是x=x+1
function m() {
console.log(x++);
}
IIEF返回函数(不是函数的结果)-这就是为什么var a
现在是对函数m
的一种引用-这意味着调用a,通过使用符号a()
调用由函数m
定义的代码
return m;
接下来,函数b被定义为只调用函数a 3次
function b() {
a();
a();
a();
}
接下来,调用函数b-b()
这将首次调用函数a
它调用函数m
return m;
它输出x
的值,即5,然后将x
增加到6
现在b第二次调用函数a
它调用函数m
return m;
它输出x
的值,现在是6,然后将x
增加到7
现在b第三次调用函数a
它调用函数m
return m;
它输出x
的值,现在是7,然后将x
增加到8
由于没有从
函数b
返回任何内容,并且您正在某种控制台(可能是浏览器开发工具或节点)上运行此操作,因此控制台会记录函数b
的结果,当没有返回值时,函数b
是未定义的是否有您特别不了解的内容?您希望得到什么样的输出?您希望它输出其他东西吗?