我正在调试一些东西并在JavaScript中发现了一些奇怪之处:
alert(1=='') ==> false
alert(0=='') ==> true
alert(-1=='') ==> false
Run Code Online (Sandbox Code Playgroud)
隐含的字符串比较0应该为'0'是有意义的.对于所有非零值都是如此,但为什么不为零呢?
Gre*_*reg 19
根据关于Javascript比较运算符的Mozilla文档
如果两个操作数的类型不同,则JavaScript转换操作数,然后应用严格比较.如果操作数是数字或布尔值,则操作数将转换为数字; 如果任一操作数是一个字符串,另一个操作数将转换为字符串
实际发生的是字符串被转换为数字.例如:
1 == '1'变1 == Number('1')变1 == 1:true
那么试试这个:
1 == '1.'变成1 == Number('1.')变成1 == 1:true
如果他们成为字符串,那么你会得到'1' == '1.',这将是错误的.
事实就是这样Number('') == 0,因此0 == ''是真的
Joe*_*orn 10
当javascript执行隐式类型转换时,空字符串文字将匹配0整数.做这样的比较,你会得到你期望的结果:
alert(1==='') ==> false
alert(0==='') ==> false
alert(-1==='') ==> false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |