Saya suka ||=
mekanisme Ruby . Jika variabel tidak ada atau ada nil
, buatlah dan setel sama dengan sesuatu:
amount # is nil
amount ||= 0 # is 0
amount ||= 5 # is 0
Saya perlu melakukan sesuatu yang serupa di JavaScript sekarang. Apa konvensi atau cara yang tepat untuk melakukan ini? Saya tahu ||=
itu bukan sintaks yang valid. 2 cara yang jelas untuk menanganinya adalah:
window.myLib = window.myLib || {};
// or
if (!window.myLib)
window.myLib = {};
javascript
ruby
syntax
di.
sumber
sumber
x
adalah falsy, likefalse
, dan Anda hanya ingin menyetel default saatx
tidak ditentukan.let amount = 0;
diikuti olehamount = amount || 5
akan berubah menjadi 5. Jika Anda tidak ingin hal itu terjadi gunakan??
operator sebagai gantinya||
.amount ??= 5;
.Anda dapat menggunakan operator OR logis
||
yang mengevaluasi operan kanannya jikalVal
nilai salah.Nilai-nilai yang salah termasuk misalnya
null, false, 0, "", undefined, NaN
sumber
x
adalah falsy, likefalse
, dan Anda hanya ingin menyetel default saatx
tidak ditentukan.Jika Anda bekerja dengan objek, Anda dapat menggunakan destructuring (sejak ES6) seperti ini:
... tetapi Anda tidak mendapatkan apa-apa atas jawaban yang diterima kecuali kebingungan.
sumber
Operator yang Anda tanyakan telah diusulkan sebagai fitur dalam JavaScript . Saat ini berada di Tahap 3 , jadi belum menjadi bagian resmi dari bahasa tersebut, tetapi akan diterima, dengan paling banyak perubahan kecil jika mereka menemukan masalah besar yang tidak terduga.
Anda dapat menggunakannya sekarang menggunakan plugin Babel plugin-proposal-logical-assignment-operator . Saya belum pernah menggunakan plugin itu, jadi saya tidak tahu seberapa baik kerjanya.
sumber
Ruby || = tugas hubung singkat operator. Ini dapat dianggap seperti ini:
Jadi di javascript, ini terlihat sangat mirip:
Namun, tampaknya seperti yang ditunjukkan pada komentar di bawah, bentuk literal ruby ini kurang efisien dibandingkan dengan idiom javascript standar a = a || b.
Untuk referensi: http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html
sumber
a = a || b
bentuknya lebih optimal jsperf.com/x-or-x-equals-0-vs-x-equals-x-or-0/3a = a || b
.a || (a = b)
memiliki semantik yang benar untuk menyimpulkan nama fungsi. Saat ini sedang dalam diskusi untuk proposal baru.Anda dapat mencapai perilaku yang diinginkan menggunakan | = operator di javascript hanya untuk bilangan bulat. Tetapi Anda harus mendefinisikan variabel terlebih dahulu.
Untuk benda
Untuk Array
sumber
|
atau|=
. Perilaku yang diinginkan dalam pertanyaan tidak terkait dengan operasi bitwise.