2017-01-10 20 views
1

; 所以結果應該是NaN?與NaN的所有arithmatic操作應該是我有喜歡</p> <pre><code>var x = parseInt(1)+'b'; </code></pre> <p>爲什麼這個結果是1B但<code>isNAN('b')</code>一個語句返回true爲NaN

+1

你已經得到了答案,但也請查看關於[表達式和運算符 - 字符串運算符]的文檔(https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Expressions_and_Operators#String_operators) – Nope

+0

簡答題:因爲它不是算術運算:) –

回答

12

Number + String不是算術運算。

Number + String聲明中,引擎會將該數字轉換爲等效字符串。你的情況是1 -> '1'。然後將簡單字符串連接起來,因爲+運算符會連接兩個字符串。

'1' + 'b' === '1b'; 

代碼段

console.log(1 + 'b');

萬一與IsNaN('b'),它會嘗試檢測是該參數的數目或沒有。 'b'不是一個數字(NaN),所以它會返回true

代碼段

console.log(isNaN('b'));

有關詳細看到Documentation

5

因爲它不是一個算術運算,這是一個字符串連接。每當操作數到+是一個字符串,字符串連接完成,而不是加法; details in the spec。如果另一個操作數不是一個字符串,那麼它就是字符串。所以你最終得到"1" + "b" =>"1b"

1

+運算符,當它有一個字符串作爲它的參數之一時,將被解釋爲「連接」運算符而不是「加法」。非字符串值將被轉換爲字符串並附加到或附加到字符串值,具體取決於它是否在操作符的右側或左側(分別)。

相關問題