1

私はこのスニペットに戸惑っています:

var n1 = 5-"4";
var n2 = 5+"4";

alert(n1);
alert(n2);

n1が1であることを理解しています。これは、マイナス演算子が文字列「4」を数値に変換し、5から減算するためです。しかし、+演算子の場合に54が得られるのはなぜですか。

+演算子と=演算子のこの違いを誰かが私に説明できますか?

4

6 に答える 6

3

型変換により+、文字列を含む式は文字列になります。したがって、連結を実行する前に、すべてのオペランド(この場合5)が文字列に変換されます。

-一方、単なる算術オペランドであるため"4"、整数に変換され、期待どおりに計算が実行されます。

于 2012-09-29T07:08:24.893 に答える
2

n2は、+が加算ではなく連結として扱われているためです。したがって、文字列に5変換されて連結され、「54」が得られます。"5""4"

于 2012-09-29T07:07:44.510 に答える
2

のいずれかの側に文字列がある場合、++文字列連結演算子と見なされ、もう一方の側は文字列に変換されてから連結を実行します。

そして、のようなものに注意してください。1+2+'3'結果はでは'33'なくです'123'

于 2012-09-29T07:09:08.287 に答える
1

-演算子の意味は1つだけです。つまり、数値の減算(または否定、その場合は数値への変換)です。+ただし、演​​算子の場合、数値の加算文字列の連結の2つがあります。演算子のオペランドの1つが+文字列の場合、数値の加算ではなく文字列の連結を行います。

ただし、プロセス全体はそれよりも少し複雑であり、たとえば、ここでもう少し学ぶことができるアルゴリズムが含まれます。

于 2012-09-29T07:07:32.333 に答える
1

+演算子は文字列演算子でもあります。javascriptのほとんどすべての基本型変数は、文字列表現でも解釈できます。あなたは54を得て5から4を付けているだけです。

-演算子は文字列演算子ではないため、コンパイラは「4」を数値として解釈しようとし、1を取得します。

于 2012-09-29T07:08:33.107 に答える
1

Javascriptは、数値として5、文字列として「4」を取ります。javascript +演算子は、2つのことを連結するために使用します。追加したい場合は、parseIntを使用してください。

var n1 = 5-"4";
var n2 = parseInt(5)+parseInt("4");

alert(n1);
alert(n2);
于 2012-09-29T07:10:09.540 に答える