Maison > Questions et réponses > le corps du texte
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
仅有的幸福2017-05-19 10:35:27
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
巴扎黑2017-05-19 10:35:27
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 ===>