我使用這個代碼的JSLintJSLint的字符串比較錯誤看到 '=='
var string = "Hello";
if (string == "Hello") {
string = "World";
}
而且我收到此錯誤
Expected '===' and instead saw '=='.
if (string == "Hello") {
爲什麼JSLint的是拋出這個錯誤?
我使用這個代碼的JSLintJSLint的字符串比較錯誤看到 '=='
var string = "Hello";
if (string == "Hello") {
string = "World";
}
而且我收到此錯誤
Expected '===' and instead saw '=='.
if (string == "Hello") {
爲什麼JSLint的是拋出這個錯誤?
從JSLint的docs下==和!=
的==和!=經營者在比較前強制類型轉換。這是不好的 ,因爲它導致'\ t \ r \ n'== 0爲真。這可以掩蓋類型 錯誤。 JSLint無法可靠地確定==是否正確使用 ,所以最好不要使用==和!=,而應始終使用 更可靠的===和!==運算符。
如果您只關心某個值是真的還是虛假的,那麼請使用短的 表單。取而代之的
(富!= 0)
只是說
(富)
和替代
(富== 0)
說
(!foo)
有一個eqeq選項,允許使用==和!=。
如何判斷JSLint不會拋出這個錯誤。
使用JSLint的指令eqeq
這樣
/*jslint eqeq: true*/
所以完整的代碼看起來像
/*jslint eqeq: true*/
var string = "Hello";
if (string == "Hello") {
string = "World";
}
因爲JSLint的認爲==
不應該使用(平等系統是種怪異)。
我的建議是瞭解==
和===
如何工作,以及它們如何比較(check the specification)。 然後,你可以自己做出最好的決定,而不是簡單地使用來標記語言結構,從不使用。
是的,==和===之間有區別,但仍然==在許多情況下都有效。 – kiranvj 2012-07-18 06:48:48