私はtrueを返しているNaNを持つ任意のarithmatic操作はNaNに
var x = parseInt(1)+'b';
この結果は図1bである理由
が、isNAN('b')
のようなステートメントを持っていなければなりません。 結果はNaNですか?
私はtrueを返しているNaNを持つ任意のarithmatic操作はNaNに
var x = parseInt(1)+'b';
この結果は図1bである理由
が、isNAN('b')
のようなステートメントを持っていなければなりません。 結果はNaNですか?
Number + String
は算術演算ではありません。
Number + String
ステートメントでは、engineは数字を文字列に相当する文字列に変換します。
あなたの場合は1 -> '1'
になります。そして、+
演算子は2つの文字列を連結するので、単純な文字列の連結になります。 IsNaN('b')
有する場合
'1' + 'b' === '1b';
コードスニペット
console.log(1 + 'b');
は、検出しようとするパラメータが数値かどうかです。 'b'
は数字(NaN
)ではないので、true
を返します。
コードスニペット
console.log(isNaN('b'));
一方のオペランドが文字列である場合+
オペレータが連結として定義されているを参照してください。
出典:https://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1
それは算術演算ではありませんので、それは文字列の連結です。 オペランド〜+
のいずれかが文字列の場合は、加算ではなく文字列連結が行われます。 details in the spec。他のオペランドが文字列でない場合は、文字列に変換されます。つまり、"1" + "b"
=>"1b"
となります。
+
演算子は、引数の1つとして文字列がある場合、「加算」ではなく「連結」演算子として解釈されます。非文字列値は、文字列に変換され、演算子の右または左にあるかどうかに応じて、文字列値の前または後ろに付加されます。
あなたは既に答えを得ているだけでなく、[式と演算子 - 文字列演算子](https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Expressions_and_Operators#String_operators)のドキュメントを確認してください。 – Nope
短い答え:算術演算ではないので:) –