2

JavaScript の一部の操作で、予期しない結果が返されます。1つは非常に奇妙です:

[] + 1 = "1"

なぜそのように機能するのか、誰か説明できますか?

4

3 に答える 3

4

[]+ 演算子により空の文字列に変換されます。だから "" + 1 => "1" (数値も文字列に変換)

于 2013-10-01T12:46:41.603 に答える
1

異なるタイプ間の加算に関する Javascript のルールは次のとおりです。

以下の追加を考える。

value1 + value2

この式を評価するには、次の手順を実行します (§11.6.1): 両方のオペランドをプリミティブに変換します (JavaScript ではなく数学表記):

prim1 := ToPrimitive(value1)
prim2 := ToPrimitive(value2)

PreferredType が省略されているため、日付以外の場合は Number、日付の場合は String になります。prim1 または prim2 のいずれかが文字列の場合、両方を文字列に変換し、結果の連結を返します。

それ以外の場合は、prim1 と prim2 の両方を数値に変換し、結果の合計を返します。

ソース

この場合、配列は空の文字列に変換され、+ は文字列連結を実行します

于 2013-10-01T12:48:41.043 に答える