Saya tahu bahwa di php 5.3 daripada menggunakan sintaks operator terner redundan ini:
startingNum = startingNum ? startingNum : 1
... kita dapat menggunakan sintaks singkatan untuk operator terner jika memungkinkan:
startingNum = startingNum ?: 1
Dan saya tahu tentang operator terner di javascript:
startingNum = startingNum ? startingNum : 1
... tapi apakah ada singkatannya?
javascript
ternary-operator
Desainer web
sumber
sumber
||
bukan??
?||
operator JS tidak mengembalikan benar atau salah, ia mengembalikan nilai 'kebenaran' pertama. Katakanlah Anda memilikival0
danval1
sebagaiundefined
, danval2
adalah2
,val3
adalah3
.val0 || val1 || val2 || val3
akan kembali2
, karena ini adalah nilai 'kebenaran' pertama.||
akan mengembalikan nilai kebenaran pertama yang ditemuinya, dan oleh karena itu dapat digunakan sebagai operator penggabungan, mirip dengan C #??
sumber
Ya ada:
Secara umum,
expr1 || expr2
bekerja dengan cara berikut (seperti yang disebutkan dalam dokumentasi ):sumber
if a is truthy
vs.if a is evaluated to true
?Dalam hal ini, Anda dapat menggunakan operator OR.
sumber
Jika Anda memiliki kondisi dengan null, seperti
kamu bisa memakai '&&'
sumber
anything && null
mengevaluasi ke nol kecualianything
salah?Jawaban di atas benar. Dalam JavaScript, pernyataan berikut:
dapat dinyatakan sebagai
Skenario lain yang tidak tercakup di sini adalah jika Anda ingin nilai kembali salah jika tidak cocok. Singkatan JavaScript untuk ini adalah:
Tapi itu bisa dinyatakan sebagai
Hanya ingin meliput skenario lain jika orang lain mencari jawaban yang lebih umum.
sumber
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
???innerWidth * 0.0375 > 24
berbeda denganif true
bagian yang manainnerWidth * 0.0375
. Singkatan hanya dapat digunakan jikaexpression to be evaluated
dan theif true
memiliki nilai yang sama. Sama mengapa Anda tidak bisa menyingkatx = someBoolean ? 'Heck yea!' : 'No way!'
.Math.max(innerWidth * 0.0375, 24)
Math.max
bekerja lebih baik daripada operator terner dalam kasus penggunaan Anda.startingNum = startingNum ? otherNum : 1
dapat diekspresikan sebagaistartingNum = otherNum || 1
" salah. saya baru saja menguji iniUntuk membuat terner seperti:
dalam javascript, Anda dapat melakukan:
Contoh:
sumber
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
akan menjadi(innerWidth * 0.0375 > 24 && innerWidth * 0.0375) || 24
?? apakah ada singkatan, sehingga saya tidak perlu mengulanginnerWidth * 0.0375
, selain menugaskannya ke variabel ???Math.max( innerWidth * 0.0375 , 24 )
akan bekerja dengan elegan. Untuk kasus yang lebih umum, akan lebih baik untuk membuat metode deskriptif yang disebut misalnya 'somethingifiedInnerWidth' yang meningkatkan keterbacaan, daripada membuat variabel. Meskipun dalam beberapa kasus akan lebih mudah dibaca untuk memiliki variabel (dari nama deskriptif itu), jadi di masa depan pertanyaan 'mengapa dikalikan dengan ini?' tidak dinaikkan.Math.max
. solusi super elegan !!