JS作用域与闭包代码疑问:为何仅返回[Function: fun2]而非预期值?
问题分析与解决
你没调用函数!变量b确实存了fun2函数,但你现在只是直接打印这个函数对象,所以输出[Function: fun2]。要让它打印a的值,得执行这个函数。
修改后的代码示例:
function fun1(){ let a = 2 function fun2(){ console.log(a) } return fun2 } b = fun1() b() // 调用函数,此时才会执行fun2里的console.log(a)
当fun1执行完返回fun2后,fun2依然能访问fun1作用域内的a变量,这就是闭包的特性,但只有调用fun2时,它才会执行内部的打印逻辑。
内容的提问来源于stack exchange,提问作者Abhijeet
相关产品推荐
相关产品推荐

