2012-07-18 23 views
1

我使用這個代碼的JSLintJSLint的字符串比較錯誤看到 '=='

var string = "Hello"; 
if (string == "Hello") { 
    string = "World"; 
} 

而且我收到此錯誤

Expected '===' and instead saw '=='. 
if (string == "Hello") { 

爲什麼JSLint的是拋出這個錯誤?

回答

2

從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"; 
} 
0

因爲JSLint的認爲==不應該使用(平等系統是怪異)。

我的建議是瞭解=====如何工作,以及它們如何比較(check the specification)。 然後,你可以自己做出最好的決定,而不是簡單地使用來標記語言結構,從不使用

+0

是的,==和===之間有區別,但仍然==在許多情況下都有效。 – kiranvj 2012-07-18 06:48:48