为了账号安全,请及时绑定邮箱和手机立即绑定

预解析和作用域问题

预解析和作用域问题

慕斯709654 2018-08-06 14:14:04
  // 考题二,考变量提升和没有块级作用域:    console.log(a);    if ('a' in window) {        var a = 10;    }    console.log(a);    // 考题三,考函数作用域:    if ('a' in window) {        (function(){            var a = 10;        }());    }    console.log(a);
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

1、先说考题2,在javascript中是没有块级作用于的,也就是说,题中的代码等同于一下代码:

    console.log(a);    var a;    if ('a' in window) {
        a = 10;
    }    console.log(a);
另外,使用var声明的变量和使用function声明的函数在执行之前会被前置,所以题中代码等同于一下代码:
    var a;    console.log(a);    if ('a' in window) {
        a = 10;
    }    console.log(a);
而var a;声明变量可以认为相当于在window上注册了a变量:window.a。所以就这样了

2、考题3是吧var a = 10 ;放到了一个闭包里面:

         (function(){
            var a = 10;
        }());

这是一个函数,javascript中是有函数作用域的,所以a的声明是无法提出来到外面的,在外面也无法引用到a,所以执行结果会报错。


查看完整回答
反对 回复 2018-09-26
  • 1 回答
  • 0 关注
  • 563 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号