求大神解答!!!!!

我不是邱杰请来的救兵 2018-02-26 05:28:50
if(!('a' in window)){
a = 1
}
if(!('b' in window)){
var b = 1
}
if(!('c' in window)){
var d = 1
}
if(!('e' in window)){
f = 1
}
alert(a) //1
alert(b) //undefined
alert(d) //1
alert(f) //1
...全文
260 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
当作看不见 2018-02-26
  • 打赏
  • 举报
回复
其实还有一个问题,按照规范 在if else 中是不能声明变量的,只不过是为了兼容旧版本的代码,没有报错而已哦
天际的海浪 2018-02-26
  • 打赏
  • 举报
回复
用var声明的变量有一种“声明提升”的特性,不论var写在当前作用域内的任何地方,都会使变量在当前作用域内的代码执行前先声明,声明后变量的默认值就是undefined。 声明提升后就是变成类似这样: var b; var d; if(!('a' in window)){ a = 1 } if(!('b' in window)){ b = 1//b变量已经提前声明了,这行不会执行 } if(!('c' in window)){ d = 1 } if(!('e' in window)){ f = 1 } alert(a) //1 alert(b) //undefined alert(d) //1 alert(f) //1
似梦飞花 2018-02-26
  • 打赏
  • 举报
回复
变量提升 最终编译后的代码大致是这样的

var b,d;
    if(!('a' in window)){
        a = 1
    }
    if(!('b' in window)){
        //'b' in window == true 所以此处赋值失败
        var b = 1
    }
    if(!('c' in window)){
        var d = 1
    }
    if(!('e' in window)){
        f = 1
    }
    alert(a)   //1
    alert(b)   //undefined
    alert(d)   //1
    alert(f)   //1

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧