我随机运行JSHint来对付一些我没写过的现有Javascript。有几百个例子:
Expected '===' and instead saw '=='.
Expected '!==' and instead saw '!='.
我知道Javascript会受到类型错误的影响;没有人应该永远依赖。这就是为什么建议您从不使用==
(因为它不是您想要的)而是使用===
。这也是为什么你永远不应该使用!=
(因为它不是你想要的)而是使用!==
。
所以,我没有写的代码。我不知道它做了什么。我不知道如何到达它以测试它。但由于使用==
和!=
是不好的做法,而且我知道为什么这是不好的做法,我应该将它们转换为备用语法。
除非它会破坏事情。
绝对,保证,100%,现有代码突然无法正常工作吗?
或者它会破坏什么?
因为如果它可以破坏事物,那么它们就不会被触动;而且这个项目会像那样老死。
答案 0 :(得分:4)
这取决于你的比较。
===
表示'相等且类型相同',其中==
在比较值之前根据需要进行隐式类型转换。
如果存在依赖于这些运算符的条件语句,它肯定会破坏。
答案 1 :(得分:4)
是的,很有可能它会破坏JavaScript中的某些内容,因为==
和===
执行两种不同的操作,并且不一定是可以互换的。
答案 2 :(得分:2)
这取决于。如果你依赖JS中的松散比较。因此,如果some_var == 0
和some_var == "0"
都应该变为真,那么它就会破坏。如果你想检查,如果它是字符串" 0"比你必须使用===
。
所以是的,它可能会破坏某些东西,但它也可能会修复一些错误的评估。
答案 3 :(得分:2)
然而,使用“严格”形式(===
和!==
)通常被认为是最佳实践,因为它们的行为比“标准”非严格形式更可预测({{1 }和==
)形式。
关键问题是!=
和==
运算符执行type conversion (see docs)而!=
和===
不执行。{/ p>
请考虑以下示例:
!==
答案 4 :(得分:0)
如果两个值不相同,则===
将返回false,其中==
将返回true。因此,===
可能会返回与==
不同的结果,具体取决于您在代码中进行比较的内容。