هذا ما أكتبه عادة للحلقات.
لـ (var i = 0 ؛ i <20 ؛ i ++) {....}لكني أعتقد أن بعض الناس يكتبون هذا
لـ (var i = 0 ؛ i <20 ؛ ++ i) {..}ما هو تأثير هذا على الحلقة؟
1. يبدو أنه لا يوجد فرق في ...
ولكن عند استخدامه في المهمة ، هناك فرق ...
var a = 1 ؛ var b = a ++ ؛ var c = 1 ؛ var d = ++ c ؛ console.log (b ، d) ؛ // 1 ، 2
A ++ هو تطبيق أولاً ، ثم إضافته بنفسك
++ A هو إضافته أولاً ، ثم تطبيق أ
2. ربما تكون عادة جلبتها عصر C/C ++. لدى Legend أن ++ أنا أسرع من i ++ ، ولكن في الواقع ، فإن أداء هذين اثنين متشابه في JS.
بالنسبة للتفاصيل المحددة ، تتم كتابة المواصفات على النحو التالي:
للوضع في المقدمة -
unaryexpression: ++ unaryexpressionlet expr تكون نتيجة لتقييم unaryexpression.te oldvalue يكون tonumber (getValue (expr)). returniFabrupt (oldvalue) .Let NewValue تكون نتيجة لإضافة القيمة 1 إلى Oldvalue ، باستخدام نفس القواعد التي يتمتع بها + Operator (انظر 12.7.5). ifabrest (الحالة). Return NewValue.
ترجمة تقريبية:
1. دع Expr يساوي نتيجة التعبير الحالي (هذا هو الجزء بعد ++)
2. دع oldvalue يساوي نتيجة تحويل EXPR إلى رقم
3. استخدم نفس القواعد مثل مشغل " +" ، دع NewValue = OldValue + 1
4. تعيين NewValue لـ Expr
5. العملية بأكملها تعيد NewValue
للوضع وراءه -
postfixexpression: JefthandsideExpression ++
1. دع LHS تكون نتيجة لتقييم تعبير اليسار.
2. دع أن Oldvalue يكون tonumber (getValue (LHS)).
3. returnifabrest (Oldvalue).
4. اسمح NewValue بأن تكون نتيجة لإضافة القيمة 1 إلى OldValue ، باستخدام نفس القواعد كما بالنسبة لمشغل + (انظر 12.7.5).
5. lek يكون putvalue (LHS ، NewValue).
6. returnifabrest (الحالة).
7. إرجاع Oldvalue.
ترجمة تقريبية -
1. دع LHS تساوي نتيجة التعبير الحالي (الجزء السابق من ++)
2. دع oldvalue يساوي LHS لتحويل نتيجة العدد
3. استخدم نفس القواعد مثل مشغل " +" ، دع NewValue = OldValue + 1
4. تعيين NewValue إلى LHS
5. العملية بأكملها تعيد أولفالوي
يمكن ملاحظة أن الفرق بين الاثنين هو الخطوة الأخيرة فقط. ما إذا كانت العملية بأكملها تعود بعد إضافة واحدة أو قبل إضافة واحدة.
للبيان:
لـ (var i = 0 ؛ i <n ؛ i ++)
العمود الأخير هو مجرد مضافة ذاتيا ولا يعين هذه القيمة لأي شخص ، لذلك من وجهة النظر هذه ، هو نفسه بالنسبة لرموز ++ التي سيتم وضعها في المقدمة أو بعد.
3. في الواقع ، لا يوجد فرق كبير. ولكن إذا كنت ترغب في متابعة القليل من الكفاءة ، فسوف أكون بالفعل أكثر كفاءة.
إنه بالفعل من مكتبة STD القياسية لـ C ++. عندما أكون متكررًا لحاوية STD ، فأنا لست رقمًا ، فأنا أقوم بإنشاء عملية مهمة إضافية ، لذلك ++ لدي أداء أعلى. لذلك ، يحب الأشخاص الذين اعتادوا على استخدام C ++ استخدام ++ لتوفير المال عندما لا أكون قيمة رقمية.
ما سبق هو الفرق بين I ++ و ++ I في JS للحلقة التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!