++ بعض المتغيرات مقابل Somevariable ++ في JavaScript
-
28-09-2019 - |
سؤال
في JavaScript يمكنك استخدامه ++
المشغل من قبل (ما قبل المخلصة) أو بعد الاسم المتغير (بعد الزيادة). ما هي الاختلافات بين هذه الطرق لزيادة المتغير ، إن وجدت ، بين هذه الطرق لزيادة المتغير؟
المحلول
كما هو الحال في اللغات الأخرى:
++x
(ما قبل الخلاصة) يعني "زيادة المتغير ؛ قيمة التعبير هي القيمة النهائية"x++
(ما بعد الخلاصة) يعني "تذكر القيمة الأصلية ، ثم زيادة المتغير ؛ قيمة التعبير هي القيمة الأصلية"
الآن عند استخدامه كبيان مستقل ، فهي تعني نفس الشيء:
x++;
++x;
يأتي الفرق عند استخدام قيمة التعبير في مكان آخر. فمثلا:
x = 0;
y = array[x++]; // This will get array[0]
x = 0;
y = array[++x]; // This will get array[1]
نصائح أخرى
++x
يزيد القيمة ، ثم يقوم بتقييمها وتخزينها.x++
يقيم القيمة ، ثم يزيد ويخزنها.
var n = 0, m = 0;
alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */
لاحظ أن هناك فوائد أداء طفيفة لاستخدامها ++x
حيثما أمكن ، لأنك تقرأ المتغير ، قم بتعديله ، ثم قم بتقييمه وتخزينه. مقابل x++
المشغل حيث تقرأ القيمة ، وتقييمها ، وتعديلها ، ثم تخزينها.
كما أفهمهم إذا كنت تستخدمها مستقلة ، فإنهم يفعلون نفس الشيء. إذا حاولت إخراج نتيجة لهم كتعبير ، فقد تختلف. جرب ALERT (i ++) مقارنةً بالتنبيه (++ i) لمعرفة الفرق. I ++ يقييم أنا قبل الإضافة و ++ أقوم بالإضافة قبل التقييم.
نرى http://jsfiddle.net/xadc4/ على سبيل المثال.
كنت أفكر في هذا أمس القراءة هذا الرد إلى السؤال عن الافتراضات السيئة في C/C ++. في جميع الحالات ، هل يمكننا أن نضمن أن JavaScript يتصرف بهذه الطريقة؟ أو هل تعتقد أنه من الممارسات السيئة استخدام بيان الزيادة في بيان أكثر تعقيدًا على الإطلاق؟
var x = 0, y = 0;
//post-increment: i++ returns value then adds one to it
console.log('x++ will log: ', x++); //0
console.log('x after x++ : ', x); //1
//pre-increment: adds one to the value, then returns it
console.log('++y will log: ', ++y); //1
console.log('y after ++y : ', y); //1
var a = 1;
var b = ++a;
alert('a:' + a + ';b:' + b); //a:2;b:2
var c = 1;
var d = c++;
alert('c:' + c + ';d:' + d); //c:2;d:1