JavaScript中表达式window === self === this的输出结果为什么为false?
问题原因说明
核心原因是 JavaScript 的全等运算符===遵循左结合的运算规则,不会同时比对三个值的相等性,会按从左到右的顺序分步运算:
- 首先执行左侧的
window === this判断:在浏览器全局作用域下运行代码时,全局上下文的this默认指向window对象,因此这一步返回布尔值true - 第一步的运算结果会代入后续判断,实际执行的第二步运算为
true === self:浏览器环境下self是window的别名,属于对象类型,布尔值和对象类型的值不可能全等,因此最终返回结果为false
如果要实现三个值两两相等的判断,正确写法是用逻辑与运算符连接两个全等判断:
// 正确写法,返回true console.log(window === this && this === self)
内容的提问来源于stack exchange,提问作者Nice18
相关产品推荐
相关产品推荐

