JS声明前置相关笔试题

以下代码会不会报错,如果不报错输出什么,为什么

    var y = 10;

    if (!(x in window)) {
        var x = 10;
    } else {
        ++y;
    }

    alert(x);
    alert(y);

 

不会报错,输出undefined和11,其中x的值为undefined,y的值为11。

原因:变量提升,对式子进行转换后得出:

 var y;
 var x;
 y = 10;
 if (!(x in window)) {
    x = 10;
 } else {
    ++y;
 }
alert(x);
alert(y);`

然后因为,此时的x在全局环境被声明,所以!(x in window)为false,不执行x的赋值,然后执行++y,得出y值为11,x值为undefined;

前端 前端面试 前端笔试

有用 (0)

评论加载中...