これは私が通常ループ用に書いているものです。
for(var i = 0; i <20; i ++){....}しかし、私はこれを書いている人もいると思います
for(var i = 0; i <20; ++ i){..}これは、forループにどのような影響を与えますか?
1。に違いはないようです...
しかし、割り当てで使用する場合、違いがあります...
var a = 1; var b = a ++; var c = 1; var d = ++ c; console.log(b、d); // 1、2
A ++は最初に適用してから自分で追加することです
++ aは最初にそれを追加し、次に適用します
2。それはおそらくC/C ++時代によってもたらされる習慣です。伝説によれば、++ IはI ++よりも高速ですが、実際、これら2つのパフォーマンスはJSで類似しています。
特定の詳細については、仕様は次のように記述されています。
正面の状況のために -
unaryExpression:++ unaryexpressionlet exprは、unaryExpressionを評価した結果です。Tonumber(getValue(expr))。 NewValue。
大まかな翻訳:
1.現在の式の結果にexprを等しくします(それは++の後の部分です)
2。exprが数に変換された結果に等しいoldvalueを等しくします
3。「 +」演算子と同じルールを使用して、newValue = oldValue + 1とlet
4. exprにnewValueを割り当てます
5.操作全体がNewValueを返します
その背後にある状況のために -
fixexpression PostfixExpression:lefthandideExpression ++
1.LHSは、脚の延長を評価した結果です。
2.Let OldValue Be Tonumber(GetValue(LHS))。
3。returnifcturt(oldvalue)。
4. newValueは、 +演算子と同じルールを使用して、値1をOldValueに追加した結果です(12.7.5を参照)。
5. letステータスはputvalue(LHS、newValue)。
6。return -abstuld(status)。
7。OldValueを返します。
大まかな翻訳 -
1. LHSが現在の式の結果に等しくなります(++の前の部分)
2. oldvalueをLHSに等しくして、数の結果を変換します
3。「 +」演算子と同じルールを使用して、newValue = oldValue + 1とlet
4. newValueをLHSに割り当てます
5.操作全体がoldvalueを返します
2つの違いは最後のステップにすぎないことがわかります。操作全体が1つを追加した後、または1つを追加する前に戻るかどうか。
声明のために:
for(var i = 0; i <n; i ++)
最後の列は自己アドバイスであり、この値を誰にも割り当てないため、この観点からは、++シンボルが前後に配置されるのと同じです。
3。実際、大きな違いはありません。しかし、あなたがその少しの効率を追求したいなら、++私は確かにより効率的になります。
実際、C ++のSTD標準ライブラリからです。私がSTDコンテナのイテレーターである場合、私は数字ではありません。I++は追加の割り当て操作を生成するため、++はパフォーマンスが高くなります。したがって、C ++に慣れている人は、++ Iを使用して数値的値ではない場合にお金を節約したいと考えています。
上記は、編集者が紹介したJSのI ++と++ Iの違いです。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!