为何JavaScript中1===1<3输出false?请求技术解析
JavaScript运算结果解析
你的困惑核心在于运算符的左结合性和布尔值与数字的隐式类型转换,下面逐个拆解代码:
1. console.log(1===1<3)
JavaScript中,===和<运算遵循左结合规则——从左到右依次计算:
- 先执行
1===1,返回布尔值true - 再执行
true < 3:JavaScript会自动将布尔值转换为数字,true对应1,false对应0,所以实际计算的是1 < 3,结果应为true(你标注的False大概率是笔误)
2. console.log('1===1',typeof(1===1),1===1)
这段代码验证了1===1的结果是布尔值true,和预期一致。
3. console.log('1<2',typeof(1<2),1<2)
同理,1<2的结果是布尔值true,符合预期。
4. console.log(1<2<3)
同样遵循左结合规则:
- 先算
1<2得到true - 再算
true < 3,转换为1 < 3,结果为true
5. console.log(true<3)
布尔值true被转换为数字1,计算1 < 3,结果为true
总结:所有运算都是因为左结合规则导致先计算左侧表达式,再将布尔结果转为数字参与后续比较,最终得到对应结果。
内容的提问来源于stack exchange,提问作者Gagandeep Singh
相关产品推荐
相关产品推荐

