javascript - Problème avec une opération d'opérateur
怪我咯
怪我咯 2017-05-19 10:33:27
0
2
480

Si n et guard n'existent pas, n==null est vrai Dans l'opérateur ternaire, guard n'est pas défini Si la valeur booléenne est convertie en faux, elle sera égale à n, c'est-à-dire qu'undéfini est finalement renvoyé. .
Mais pourquoi renvoie-t-il 1 ?

var test=function(array,n,guard){
    return (n==null || guard ? 1 : n); 
};
console.log(test([]));//1
怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(2)
仅有的幸福

Tout d’abord, vous avez mal compris l’ordre des opérations

var test=function(array,n,guard){
    return (n==null || guard ? 1 : n); 
};
console.log(test([]));//1
La priorité des opérations de

|| (OU logique) est supérieure à celle de l'opérateur ternaire

Donc (n==null || guard ? 1 : n) ici calcule d'abord le OU logique, puis calcule l'opérateur ternaire

Ici, cela devient true ? 1 : n
Donc sortie n
Ci-joint une photo de la priorité des opérations, je ne me souviens plus de quel livre je l'ai tirée

.
巴扎黑
var test=function(array,n,guard){
    console.log(n==null);//true
    return (n==null || guard ? 1 : n); 
};
console.log(test([]));//1

||La priorité est supérieure à trinoculaire, donc c'est (vrai || garde) ? : n ===>

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal