JavaScript 中用"=="还是"===" 解答
程序员文章站
2022-04-11 12:47:48
...
绝大多数场合应该使用 === ,只有检测 null/undefined 的时候可以使用 x == null ,因为通常我们不区分 null 和 undefined ,即将 x == null 作为 x === null || x === undefined 的缩写。
== 的比较看似会比较方便,比如 1 == '1' ,但是会埋下隐患,比如可能对类型做出错误的假设。
例子:
if (x == 10) x += 5 www.2cto.com
如果传入的x是字符串'10',x的结果会变成'105'。在后续运算中字符串'105'又可能被转型,从而引入隐蔽的错误。
另外,程序员可能不自觉的依赖某些假设——比如相等比较应该具有传递性,即 a = b, b = c,应该能得出 a = c。但是JavaScript的 == 不具有传递性。比如 0 == '0' ,0 == '',但是 '0' != '' 。
所以 JS的 == 并非是 Java/C# 的 equals() ,因为 Java/C# 语言都是要求 equals() 必须保证传递性的。
总之,对于大型编程来说,== 的这点小小的便利性无法与其带来的风险相比。
建议:
忘掉==, 只用===。 ==是个design失误。它会尝试进行类型转换(不是java的equal,它是well defined),类型转换的规则不好记。并且还破坏传递性。
只用===,!==,你写javascript的日子会舒服一点
下一篇: 高性能电子购物车-开源电商系统升级版
推荐阅读
-
Win10怎么判断系统是纯净安装还是在线升级(实用技巧解答)
-
JavaScript中用toString()方法返回时间为字符串
-
javascript中用&&跟||来简化if{}else{}的写法
-
JavaScript中用于生成随机数的Math.random()方法
-
JavaScript中用sort()方法对数组元素进行排序的操作
-
JavaScript中用getDate()方法返回指定日期的教程
-
在JavaScript中用getMinutes()方法返回指定的分时刻
-
简介JavaScript中用于处理正切的Math.tan()方法
-
JavaScript中用于四舍五入的Math.round()方法讲解
-
JavaScript系列之―同步还是异步?