2014-11-24 60 views

回答

5

因爲typeof 3不超過2

您需要括號。

+1

這並不能解釋爲什麼結果是錯誤的。 「 – RobG 2014-11-24 02:24:04

3

爲了解釋這是怎麼回事,解釋將其視爲:

(typeof 3) > 2 

typeof運算操作總是返回一個字符串和3是一個號碼,以便表達解析爲:

'number' > 2 

Greater-than Operator (>)應用Abstract Relational Comparison Algorithm以獲得比較結果。由於'數字'是一個字符串,因此使用內部ToNumber操作將其轉換爲數字(步驟3a)。這不包含一些文字(如「3」)結果爲NaN(參見下面的註釋),字符串所以現在表達的是:

NaN > 2 

步驟3c說,如果左手錶達NaN,返回undefined(即特殊的undefined value,不是字符串'undefined')。

所以不確定返回,並的第6步大於運營商算法說:

如果[結果]是不確定的,返回false。否則,返回[結果]。

因此最終,表達式返回false

:只含有空格的(一個或多個空格,製表符,換行符,等等)的字符串轉換爲數字0,這是唯一的情況下一個字符串,它不是一個數字文本轉換爲除NaN以外的數值。見ToNumber Applied to the String Type

+0

」undefined如何轉換爲false?很有意思! – mzeshle 2014-11-24 01:25:50

相關問題