Dalam JavaScript Anda dapat menggunakan ++
operator sebelum ( kenaikan awal ) atau setelah nama variabel ( kenaikan pasca ). Apa, jika ada, perbedaan antara cara menaikkan variabel ini?
javascript
increment
unary-operator
Derek Adair
sumber
sumber
Jawaban:
Sama seperti di bahasa lain:
++x
(pre-increment) berarti "increment variabel; nilai ekspresi adalah nilai akhir"x++
(post-increment) berarti "ingat nilai asli, lalu tambahkan variabel; nilai ekspresi adalah nilai asli"Sekarang ketika digunakan sebagai pernyataan mandiri, artinya sama:
Perbedaannya muncul saat Anda menggunakan nilai ekspresi di tempat lain. Sebagai contoh:
x = 0; y = array[x++]; // This will get array[0] x = 0; y = array[++x]; // This will get array[1]
sumber
+ 1
bukan++
? Apakah ada cara untuk menambah sebelum atau sesudah saat menambahkan angka?x
dimulai sebagai 10, nilai darir1
adalah 21, yaitu 10 + 11. Nilaix++
ekspresi pertama adalah 10 danx
bertambah menjadi 11. Nilaix++
ekspresi kedua adalah 11 danx
bertambah menjadi 12.++x
menambah nilai, lalu mengevaluasi dan menyimpannya.x++
mengevaluasi nilai, lalu menambah dan menyimpannya.var n = 0, m = 0; alert(n++); /* Shows 0, then stores n = 1 */ alert(++m); /* Shows 1, then stores m = 1 */
Perhatikan bahwa ada sedikit manfaat performa untuk digunakan
++x
jika memungkinkan, karena Anda membaca variabel, mengubahnya, lalu mengevaluasi dan menyimpannya. Dibandingkan denganx++
operator tempat Anda membaca nilai, mengevaluasinya, memodifikasinya, lalu menyimpannya.sumber
Seperti yang saya pahami jika Anda menggunakannya secara mandiri, mereka melakukan hal yang sama. Jika Anda mencoba menampilkan hasilnya sebagai ekspresi maka hasilnya mungkin berbeda. Coba alert (i ++) dibandingkan dengan alert (++ i) untuk melihat perbedaannya. i ++ mengevaluasi ke i sebelum penambahan dan ++ i melakukan penambahan sebelum mengevaluasi.
Lihat http://jsfiddle.net/xaDC4/ sebagai contoh.
sumber
Saya memiliki penjelasan tentang pemahaman setelah kenaikan dan kenaikan awal. Jadi saya taruh di sini.
Ayo tetapkan
0
kex
let x = 0;
Mari kita mulai dengan kenaikan pasca
console.log(x++); // Outputs 0
Mengapa?
Mari kita hancurkan
x++
ekspresi itux = x; x = x + 1;
Pernyataan pertama mengembalikan nilai
x
yang adalah0
Dan nanti ketika Anda menggunakan
x
variabel di mana saja, maka pernyataan kedua dijalankanPernyataan kedua mengembalikan nilai dari
x + 1
ekspresi ini yaitu(0 + 1) = 1
Ingatlah nilai
x
pada keadaan ini yaitu1
Sekarang mari kita mulai dengan kenaikan sebelumnya
console.log(++x); // Outputs 2
Mengapa?
Mari kita hancurkan
++x
ekspresi itux = x + 1; x = x;
Pernyataan pertama mengembalikan nilai dari
x + 1
ekspresi ini yaitu(1 + 1) = 2
Pernyataan kedua mengembalikan nilai
x
yang2
jadix = 2
demikian ia kembali2
Semoga ini dapat membantu Anda memahami apa itu kenaikan pasca dan kenaikan awal!
sumber
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
jsfiddle.dll
sumber
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
sumber