Jika saya menggunakan:
1.09 * 1; // returns "1.09"
Tetapi jika saya menggunakan:
1,09 * 1; // returns "9"
Saya tahu bahwa 1,09 bukanlah angka.
Apa yang dilakukan koma di bagian terakhir kode?
Lebih Banyak Contoh
if (0,9) alert("ok"); // alert
if (9,0) alert("ok"); // don't alert
alert(1); alert(2); alert(3); // 3 alerts
alert(1), alert(2), alert(3); // 3 alerts too
alert("2",
foo = function (param) {
alert(param)
},
foo('1')
)
foo('3'); // alerts 1, 2 and 3
javascript
comma-operator
Topera
sumber
sumber
alert
hanya membutuhkan satu argumen. Apa pun setelah itu akan dibuang.arguments
objek sebagai gantinya, yang bisa berapa pun panjangnya). Bahkan dengan JS terkompilasi modern, tidak akan ada cara untuk mengetahui sebelumnya berapa banyak argumen yang akan diambil suatu fungsi. Pertimbangkan ini:function test() { args=[]; for (var i = 0; i < arguments.length; i++) { args.push(arguments[i] + 1); } ;
Penerjemah harus tahu bagaimana fungsi itu digunakan untuk mengetahui berapa banyak argumen yang diperlukan. Sebaliknya, ia mengevaluasi segalanya.Jawaban:
Sumber: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
Misalnya, ekspresi
1,2,3,4,5
bernilai5
. Jelas sekali, operator koma hanya berguna untuk operasi dengan efek samping.console.log(1,2,3,4,5); console.log((1,2,3,4,5));
sumber
for
loop yang dipisahkan titik koma .continue
poin tanpa duplikasi, tetapi Anda tidak boleh memiliki banyakcontinue
poin.Beberapa lagi yang perlu dipertimbangkan:
console.log((0, 9)); console.log((9, 0)); console.log(("foo", "bar"));
sumber
alert("1", alert("2", alert("3")))
last
operan.https://stackoverflow.com/a/3561056/5934465
Seharusnya seperti ini!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
sumber
a,b,c,d
adalah((((a),b),c),d)
Coba lihat di sini - koma adalah singkatan dari beberapa ekspresi / pernyataan. Misalnya dalam kode Anda, Anda dapat menggunakan baris seperti ini:
var a=0, b=0, c=0;
Ini akan mendeklarasikan ketiga variabel tanpa menulis:
var a=0; var b=0; var c=0;
Semoga membantu.
sumber
var
deklarasi tidak menggunakan operator koma , meskipun itu koma) dan (2) Anda tidak dapat memisahkan pernyataan menggunakan operator koma; hanya ekspresi yang diperbolehkan.Menambahkan / memodifikasi properti ke objek dan mengembalikannya di baris yang sama adalah kasus penggunaan yang mungkin:
console.log( ((x) => (o = {biggerCond: r => r >= x}, o.r5 = Array.from(window.crypto.getRandomValues(new Uint16Array(5))), o.isAnyBigger = o.r5.some(o.biggerCond), o.bigger = o.isAnyBigger ? o.r5.filter(o.biggerCond) : [x], o ) )(5e4) ); // Example // { // bigger: [58414, 56500, 63397], // isAnyBigger: true, // isBiggerCond: r => r >= x, // r5: [58414, 12015, 56500, 63397, 43861] // }
Fungsi anonim di atas mengembalikan objek dengan nilai acak yang lebih besar dari nilai masukan atau, jika tidak ada, dengan nilai masukan itu sendiri dalam larik yang terdapat dalam
bigger
properti.Ini masih gula sintaksis (seperti fungsi panah ), tetapi itu mempersingkat jumlah baris ... Saya ingin tahu apakah beberapa penambang JS mendeteksi dan menyesuaikan kode dengan cara yang sama secara otomatis. Jalankan di konsol Anda:
((x)=>(o={biggerCond:r=>r>=x},o.r5=Array.from(window.crypto.getRandomValues(new Uint16Array(5))),o.isAnyBigger=o.r5.some(o.biggerCond),o.bigger=o.isAnyBigger?o.r5.filter(o.biggerCond):[x],o))(5e4)
sumber