首页 > 其他分享 >面试代码题(闭包相关)

面试代码题(闭包相关)

时间:2023-08-01 11:56:55浏览次数:35  
标签:闭包 10 fn2 fn1 function 代码 面试 var

var a = 10;
function fn1() {
    return a + 10;
}
function fn2() {
    var a = 20;
    return fn1();
}
console.log(fn2());

第一反应是调用fn1,逐级往上查找a变量,但是经过提醒发现,fn1在定义的时候就已经产生了一个闭包,a就是对于全局a的引用,所以答案是20

因为在JS中,变量的作用域是在函数定义时就决定了

测试一下,如果将上面的 var a = 10; 注释掉,运行报错: ReferenceError: a is not defined 

反证成功

标签:闭包,10,fn2,fn1,function,代码,面试,var
From: https://www.cnblogs.com/Delusional-man/p/17596058.html

相关文章