扫码关注官方订阅号
var a = 1; function b() { var a = 2; function c() { console.log(a); } return c; } b()();
请问大神们,怎么理解b()()这句话,执行函数不是只要一个括号就可以?
b()()
ringa_lee
第二个括号其实是执行c()
c()
因为你的b()返回的是一个函数c,函数c要执行还得加括号不是么
谢邀~
b() --> 返回值为 function c b()() --> c()
b() 这个执行的是b这个方法 返回值也是一个方法 在加一个()执行的就是c方法
b()返回的是一个方法、第二组括号是执行返回的function
如果不懂可以console.log(b())和console.log(b()())就知道了
一句话 b()()代表的是执行b函数返回的函数
建议多去看点js基础的书籍吧,ji闭包等
第一步:b(),返回函数c,注意,这个时候,会产生闭包:c函数还可以访问父作用域,即:
b() = function c (){ console.log(a); }
闭包作用域内的变量有:
var a = 2;
第二步:b()(),执行函数c,相当于运行c()。这个时候,由于闭包内有变量var a = 2;,那么,console.log(a)会打印2。
console.log(a)
总结:这个例子,主要是考函数的闭包。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
第二个括号其实是执行
c()因为你的b()返回的是一个函数c,函数c要执行还得加括号不是么
谢邀~
b() 这个执行的是b这个方法 返回值也是一个方法 在加一个()执行的就是c方法
b()返回的是一个方法、第二组括号是执行返回的function
如果不懂可以console.log(b())和console.log(b()())就知道了
一句话
b()()代表的是执行b函数返回的函数建议多去看点js基础的书籍吧,ji闭包等
第一步:b(),返回函数c,注意,这个时候,会产生闭包:c函数还可以访问父作用域,即:
闭包作用域内的变量有:
第二步:b()(),执行函数c,相当于运行c()。这个时候,由于闭包内有变量
var a = 2;,那么,console.log(a)会打印2。总结:这个例子,主要是考函数的闭包。