javascript - 怎么理解b()()这句话?
ringa_lee
ringa_lee 2017-04-11 11:58:19
[JavaScript讨论组]
var a = 1;  
function b() {  
  var a = 2;
  function c() {
    console.log(a);
  }
  return c;
}
b()();

请问大神们,怎么理解b()()这句话,执行函数不是只要一个括号就可以?

ringa_lee
ringa_lee

ringa_lee

全部回复(7)
ringa_lee

第二个括号其实是执行c()

因为你的b()返回的是一个函数c,函数c要执行还得加括号不是么

黄舟

谢邀~

b() --> 返回值为 function c
b()() --> c()
高洛峰

b() 这个执行的是b这个方法 返回值也是一个方法 在加一个()执行的就是c方法

黄舟

b()返回的是一个方法、第二组括号是执行返回的function

如果不懂可以console.log(b())和console.log(b()())就知道了

阿神

一句话
b()()代表的是执行b函数返回的函数

PHPz

建议多去看点js基础的书籍吧,ji闭包等

PHP中文网

第一步:b(),返回函数c,注意,这个时候,会产生闭包:c函数还可以访问父作用域,即:

b() = function c (){
    console.log(a);
}

闭包作用域内的变量有:

var a = 2;

第二步:b()(),执行函数c,相当于运行c()。这个时候,由于闭包内有变量var a = 2;,那么,console.log(a)会打印2。

总结:这个例子,主要是考函数的闭包。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号