私はStoyan stefanov本のオブジェクト指向のJavascriptという名前の運動の問題を経験していました。JavaScriptを使用して文字列を増分する投稿
問題:
var s = 'ls';
s++;
私はクロームでこれを実行すると、私がNaNを取得します。同じコードの場合
私は
var s = 'ls';
s = s+1;
をすれば、私は
LS1として出力を得る上で誰もがその背後にある理由を説明していただけますか?
私はStoyan stefanov本のオブジェクト指向のJavascriptという名前の運動の問題を経験していました。JavaScriptを使用して文字列を増分する投稿
問題:
var s = 'ls';
s++;
私はクロームでこれを実行すると、私がNaNを取得します。同じコードの場合
私は
var s = 'ls';
s = s+1;
をすれば、私は
LS1として出力を得る上で誰もがその背後にある理由を説明していただけますか?
++
x
を数字に変換しようとします。最初。したがって、x
がstring
値を持ち、NaN
を返すため、失敗しました。
s ++は数字に対して一般的に行われるインクリメント演算であり、したがって出力ナノ(数値ではありません)です。後者の場合、連結操作を実行しています。したがって 'ls' + 1は 'ls1'を与えます。
++
で文字列を増やすことはできません。その演算子は、number
プリミティブのために排他的に予約されています。代わりに試してみてください:あなたはその番号をインクリメントしようとする++ないとき
s = s + 1;
:
var s = 'ls';
s += 1;
console.log(s);
を上記のあなたは、もともと掲示何のためのシンタックスシュガー(string concatenation)です。 +記号を使用すると、追加または連結されます。それは "スマート"であり、sは文字列なので、それを1に連結します。++では、文字列をインクリメントしてNaN(数字ではない)を得ることができません。
文字列に 's ++;'を実行すると期待されることはありますか? – alfasin
基本的に '+ = 1'は' ++ 'と等価ではありません。 –
@alfasin s ++とs = s + 1が同じであるためです。だから私は結果がls1と思った – roxid