Ada beberapa operator baru yang sangat praktis digunakan untuk mempersingkat kodingan Javascript kamu. Proposalnya sudah sampai tahap stage 4 yang artinya akan dimasukkan pada versi ECMAScript berikutnya (ES2021). Ini juga berarti sekarang sudah bisa digunakan karena sudah support oleh browser-browser modern versi terupdate tanpa menggunakan transpiler. Tapi tentu saja untuk kompatibilitas yang lebih tinggi disarankan kamu tetap menggunakan transpiler seperti Babel atau menggunakan Typescript.
Ada 3 operator yang masuk dalam proposal logical assignment ini:
- Logical OR assignment
||=
- Logical AND assignment
&&=
- Logical nullish assignment
??=
Logical OR assignment ||=
Operator ini berguna untuk case mengganti value sebuah variable jika valuenya adalah falsy.
Misal untuk mengganti value variable a
jika value sebelumnya adalah falsy, tanpa logical OR assignment kamu melakukannya lebih kurang dengan cara-cara seperti ini:
// cara 1
if (!a) {
a = 'new value';
}
// cara 2
a = a || 'new value';
Dengan logical OR assignment menjadi lebih singkat:
a ||= 'new value';
Kode diatas akan ditranspilasi oleh Babel menjadi:
a || (a = 'value');
Logical AND assignment &&=
Operator ini adalah kebalikan dari operator sebelumnya. Yaitu untuk case mengganti value sebuah variable jika valuenya adalah truthy.
Tanpa logical AND assignment, untuk mengganti value variable a
jika value sebelumnya adalah truthy kamu melakukannya lebih kurang dengan cara-cara seperti ini:
// cara 1
if (a) {
a = 'new value';
}
// cara 2
a = a && 'new value';
Syntax diatas bisa dipersingkat dengan menggunakan logical AND assignment:
a &&= 'new value';
Hasil transpilasinya oleh Babel menjadi:
a && (a = 'new value');
Logical nullish assignment ??=
Kalau sebelumnya operator logical OR assignment berguna untuk mengecek nilai falsy yang di dalamnya termasuk null
dan undefined
, operator ini spesifik untuk case value null
atau undefined
saja.
Tanpa menggunakan logical nullish assignment, untuk mengecek value null
atau undefined
dan menggantinya dengan value baru, kamu melakukannya lebih kurang dengan cara-cara berikut ini:
// cara 1
if (a == null || a == undefined) {
a = 'new value';
}
// cara 2
a = a ?? 'new value';
Akan menjadi lebih singkat dengan menggunakan logical nullish assignment:
a ??= 'new value';
Kode diatas akan ditranspilasi oleh Babel menjadi:
var _a;
(_a = a) !== null && _a !== void 0 ? _a : (a = 'new value');
Top comments (0)