10

どうして+=文字列で使用できるのに使用できないの-=ですか?

例えば...

var test = "Test";
var arr = "⇔"

test += arr;
alert(test);  // Shows "Test⇔"

test -= arr;
alert(test);  // Shows "NaN"
4

6 に答える 6

13

簡単な答えは、文字列を処理するように定義されていないということです。

より長い答え:2つの文字列に対して減算演算子を試すと、最初にそれらを数値にキャストしてから、算術演算を実行します。

"10" - "2" = 8

数値以外のものを試してみると、NaN関連のエラーが発生します。

"AA" - "A" = NaN
于 2009-11-17T19:39:49.137 に答える
7

演算子は+文字列を連結しますが、-演算子は互いに数値を減算するだけだからです。

理由については、おそらく、文字列を互いに減算するときに人々が何をしたいのかを判断するのが難しいためです。

例えば:

"My string is a very string-y string" - "string"

これは何をすべきですか?

于 2009-11-17T19:39:19.127 に答える
3

すでに述べたように、-=演算子は文字列を処理するためにオーバーロードされておらず、数値のみを処理します。

文字列で使用しようとすると、演算子は両方のオペランドをに変換しようとします。これが、次のNumber理由で取得される理由ですNaN

isNaN(+"foo"); // true

文字列のarr内容を削除するには、次のように置き換えます。test

var test = "Test",
    arr = "⇔"

test += arr;
alert(test);  // Shows "Test⇔"

test = test.replace(arr, ""); // replace the content of 'arr' with "" on 'test'
alert(test);  // Shows "Test"
于 2009-11-17T20:20:15.387 に答える
1

これは、マイナス記号が有効な文字列演算子ではないのに対し、プラス記号は数値(加算演算子)と文字列(連結演算子)の両方を処理するためにオーバーロードされているためです。

これからどのような結果を得たいと思っていましたか?

于 2009-11-17T19:38:32.013 に答える
0

一般に、プログラミング言語は文字列の減算を定義しません。+ =はそもそも実際には加算ではなく、連結です。

于 2009-11-17T19:38:08.270 に答える
0

+(プラス記号)は文字列連結演算子でもあるため、-(マイナス記号)は減算にのみ適用されます。JavaScriptが2つの文字列を一緒に追加できる場合は文句を言いませんが、2つの文字列を減算しようとしても、意味がありません。

于 2009-11-17T19:39:17.567 に答える