2017-01-10 10 views
1

私はtrueを返しているNaNを持つ任意のarithmatic操作はNaNに

var x = parseInt(1)+'b'; 
この結果は図1bである理由

が、isNAN('b')のようなステートメントを持っていなければなりません。 結果はNaNですか?

+1

あなたは既に答えを得ているだけでなく、[式と演算子 - 文字列演算子](https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Expressions_and_Operators#String_operators)のドキュメントを確認してください。 – Nope

+0

短い答え:算術演算ではないので:) –

答えて

12

Number + Stringは算術演算ではありません。

Number + Stringステートメントでは、engineは数字を文字列に相当する文字列に変換します。

あなたの場合は1 -> '1'になります。そして、+演算子は2つの文字列を連結するので、単純な文字列の連結になります。 IsNaN('b')有する場合

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

コードスニペット

console.log(1 + 'b');

は、検出しようとするパラメータが数値かどうかです。 'b'は数字(NaN)ではないので、trueを返します。

コードスニペット

console.log(isNaN('b'));
より Documentation

5

それは算術演算ではありませんので、それは文字列の連結です。 オペランド〜+のいずれかが文字列の場合は、加算ではなく文字列連結が行われます。 details in the spec。他のオペランドが文字列でない場合は、文字列に変換されます。つまり、"1" + "b" =>"1b"となります。

1

+演算子は、引数の1つとして文字列がある場合、「加算」ではなく「連結」演算子として解釈されます。非文字列値は、文字列に変換され、演算子の右または左にあるかどうかに応じて、文字列値の前または後ろに付加されます。