2021/11/3 面试题
1.写出下列代码的结果
1 var a=5; 2 (function () { 3 console.log(a); 4 a=10 5 console.log(window.a); 6 var a=20 7 console.log(a); 8 })() 9 console.log(a);
输出的结果是
undefined 5 20 5
后面三个都好理解,第一个内部变量提升到了最前方,但是没赋值,所以是undefined
如果是 let 和 const 会出现暂时性死区,会直接报错,具体原因在 https://es6.ruanyifeng.com/#docs/let#%E6%9A%82%E6%97%B6%E6%80%A7%E6%AD%BB%E5%8C%BA 有详细说明
2.
1 var name = 'World!'; 2 (function () { 3 var name; 4 if (typeof name === 'undefined') { 5 name = 'Jack'; 6 console.log('Goodbye ' + name); 7 } else { 8 console.log('Hello ' + name); 9 } 10 })();
和上一个一样,变量提升到最前方

浙公网安备 33010602011771号