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         })();

和上一个一样,变量提升到最前方

posted @ 2021-11-03 19:44  逐云去  阅读(31)  评论(0)    收藏  举报