2013-11-27 49 views
1

爲什麼doesen't javscript只是使用嚴格的相等運算符而不是抽象的和嚴格的相等運算符?爲什麼doesen't javascript/ecmascript只使用嚴格的相等運算符?

我問IRC,有人評論說微軟不想讓「===」的功能進入「==」,因爲它會破壞網站。儘管如此,沒有人能夠提出任何參考。不久之後,另一個人也對微軟的指責表示懷疑。

任何人都可以提供有關它爲什麼這樣與參考?

+3

它爲什麼要擺在首位?我個人認爲==是有用的。 – bfavaretto

+1

'=='方便檢查數字和數字字符串 – charlietfl

+1

因爲..就是這樣。 '=='的轉換會綁定到其他*弱類型的JavaScript方面,如'if(expr)'的'str + number'。 – user2864740

回答

3

JavaScript使用類型強制來自動轉換不同類型的值。然而,有時候,人們想區分"1"1,或者1true。這是=====(以及!=!==之間)的根本區別。如果沒有這種區分(如果刪除了===),則必須跳過測試類型和值相等(如果==的功能已被刪除,則類似於類型無關值測試)。

我沒有聽說過微軟的故事。我懷疑它是假的,並且會把它歸咎於某些人責怪微軟因爲每一個被認爲是邪惡的傾向。但是,如果微軟,Mozilla,谷歌,雅虎,幾乎任何有經驗的JS程序員等都可以合併=====,我會感到非常驚訝。這確實會破壞大量的代碼,並會從語言中刪除非常有用的工具。

+0

OT:祝賀100k(我想這是*我的*投票xD) – user2864740

+0

@ user2864740 - 我認爲這確實是你的投票。當我看到你的評論時,我是100,007。 :) –

+0

+1。處理可能返回值爲類型編號或字符串的主機對象時,隱式類型轉換非常方便。這將是一個PITA,總是寫'if(x =='0'|| x == 0)'。唯一真正的古怪是'undefined','NaN'和'Null'如何表現,否則它很簡單。 – RobG

1

我相信這是因爲他們想要允許某種形式的隱式類型轉換。我認爲這個問題的真正原因在於,這些規則(雖然是善意的,而不是單獨的有害的)在組合時或者在抨擊「==」的帖子中通常提到的其中一個「疑難雜症」中變得怪異。我個人喜歡有一個選擇,雖然不知道它存在可能是危險的。

相關問題