Javascript 变量调用函数和直接调用函数
我正在学习曼宁的书《用JavaScript编程》(约翰·拉森著)中的JavaScript。在第11章清单11.8中,代码:Javascript 变量调用函数和直接调用函数,javascript,function,Javascript,Function,我正在学习曼宁的书《用JavaScript编程》(约翰·拉森著)中的JavaScript。在第11章清单11.8中,代码: var getCounter=函数(){ var计数器=0; var countUpBy1=函数(){ 计数器=计数器+1; 返回计数器; }; 返回计数1; }; var count=getCounter(); 我正在使用jsbin.com进行实验和学习。在控制台中: Q1)为什么调用count(),结果并不总是1?为什么,计数器在开始时设置为0,在countupy
var getCounter=函数(){
var计数器=0;
var countUpBy1=函数(){
计数器=计数器+1;
返回计数器;
};
返回计数1;
};
var count=getCounter();
我正在使用jsbin.com进行实验和学习。在控制台中:
Q1)为什么调用count(),结果并不总是1?为什么,计数器在开始时设置为0,在countupy1之前,countupy1内部的计数器不也应该为0吗
为什么调用getCounter()与count()不同?调用count()获取一个数字(这是我所期望的),但调用getCounter()获取我:
函数(){
计数器=计数器+1;
返回计数器;
}
谢谢你提前解释
11月4日:
@大卫·弗里曼:我对第一个问题的理解正确吗(我阅读了所有3个链接,加上?,&:
(删除了我对逐步结束的理解)
11月12日:
多读几遍这个链接,它的解释比我能读的好
var getCounter=(函数(){
var计数器=0;
var countUpBy1=函数(){
计数器=计数器+1;
返回计数器;
};
返回计数1;
})();
getCounter();
阅读闭包来理解1。count=getCounter()
所以你应该期望count()
类似于getCounter()
,而不是getCounter()
@Nishant。谢谢你指出我需要理解的主题。@Ry:有没有一个专门的术语来描述两对括号,()()?我不知道你可以这样调用嵌套函数(或者我在这里的理解不正确?@ac88:任何表达式都可以调用。(1+2)(
是一个调用(但在运行时它会失败,因为3
不是一个函数)。getCounter()
是一个表达式,因此可以对其进行计算并调用其值。我建议不要使用W3学校作为参考。MDN更好,定期更新且准确。理解,但这是我在谷歌找到的第一篇对闭包有最简单解释的文章。我想这个例子与该成员试图理解的内容相符。I've更新了文章中的几个链接。@DavidFleeman:你能为Q2中的外部函数修好右大括号“}”到圆括号“)”吗?@ac88修好了括号