Jika n dan guard tidak wujud, n==null adalah benar Dalam operator ternary, guard tidak ditentukan Jika nilai Boolean ditukar kepada false, ia akan sama dengan n, iaitu, undefined dikembalikan pada akhirnya. .
Tetapi kenapa ia kembali 1?
var test=function(array,n,guard){
return (n==null || guard ? 1 : n);
};
console.log(test([]));//1
Pertama sekali, anda salah faham susunan operasi
|| (logik ATAU) keutamaan operasi lebih besar daripada pengendali ternary
Jadi (n==null || guard ? 1 : n) di sini mula-mula mengira logik OR, dan kemudian mengira pengendali ternary
di sini menjadi
true ? 1 : n
jadi outputnya adalah n
Juga dilampirkan gambar keutamaan operasi, saya tidak ingat dari mana hendak bermula Ia dipotong dari buku
||Keutamaan lebih tinggi daripada trinokular, jadi adakah (benar || guard) 1: n ===>