Maison >interface Web >Questions et réponses frontales >Y a-t-il une esperluette dans es6 ?

Y a-t-il une esperluette dans es6 ?

青灯夜游
青灯夜游original
2022-11-01 19:24:251322parcourir

a une esperluette. Dans es6, "&&" est un opérateur ET logique, qui est une opération booléenne AND. La syntaxe est "opérande 1 && opérande 2" uniquement lorsque les deux opérandes sont vrais, elle renvoie vrai, sinon elle renvoie faux. Le ET logique est une sorte de logique de court-circuit. Si l'expression de gauche est fausse, le résultat est directement court-circuité et renvoyé, et l'expression de droite n'est plus évaluée.

Y a-t-il une esperluette dans es6 ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, ECMAScript version 6, ordinateur Dell G3.

Il y a un symbole & dans es6, et "&&" est l'opérateur logique AND.

Opération ET logique &&

L'opération ET logique (&&) est une opération booléenne ET. Renvoie vrai uniquement si les deux opérandes sont vrais, sinon renvoie faux. La description détaillée est présentée dans le tableau.

faux
Opération ET logique
Premier opérande Deuxième opérande Résultat de l'opération
vrai vrai vrai
vrai faux faux
faux vrai faux
faux faux faux

    Le ET logique est une sorte de logique de court-circuit Si l'expression de gauche est fausse, le résultat sera court-circuité et. retourné sans aucune autre opération d'expression à droite. La logique de fonctionnement est la suivante :
  • Étape 1 : Calculez la valeur du premier opérande (expression à gauche).
  • Étape 2 : Détectez la valeur du premier opérande. Si la valeur de l'expression de gauche est convertible en faux (comme null, undefined, NaN, 0, "", false), alors l'opération se terminera et la valeur du premier opérande sera renvoyée directement.
  • Étape 3 : Si le premier opérande peut être converti en vrai, évaluez le deuxième opérande (expression de droite).
  • Étape 4 : Renvoyez la valeur du deuxième opérande.

Exemple 1

Le code suivant utilise des opérations ET logiques pour détecter les variables et les initialiser.

var user;  //定义变量
(! user && console.log("没有赋值"));  //返回提示信息“没有赋值”

est équivalent à :

var user;  //定义变量
if (! user){  //条件判断
    console.log("变量没有赋值");
}

Si la valeur de la variable user est 0 ou si une valeur fausse telle qu'une chaîne vide est convertie en valeur booléenne, elle sera fausse. Ensuite, une fois que la variable aura reçu une valeur, elle le sera. indique toujours que la variable n'a pas reçu de valeur. Par conséquent, lors de la conception, vous devez vous assurer que la valeur de retour de l’expression située à gauche du ET logique est une valeur prévisible.

var user = 0;  //定义并初始化变量
(! user && console.log("变量没有赋值"));  //返回提示信息“变量没有赋值”

L'expression de droite ne doit pas contenir d'opérations valides telles que l'affectation, l'incrémentation, la décrémentation et l'appel de fonction, car lorsque l'expression de gauche est fausse, l'expression de droite sera ignorée directement, ce qui aura un potentiel impact sur les opérations ultérieures.

Exemple 2

L'utilisation d'opérateurs ET logiques peut remplacer la conception de structures à plusieurs branches.

var n = 3;
(n == 1) && console.log(1);
(n == 2) && console.log(2);
(n == 3) && console.log(3);
( ! n ) && console.log("null");

Le code ci-dessus est équivalent à la structure multi-branches suivante.

var n = 3;
switch(n){
    case1:
        console.log(1);
        break;
    case2:
        console.log(2);
        break;
    case3:
        console.log(3);
        break;
    default:
        console.log("null");

L'opérande de l'opération ET logique peut être n'importe quel type de valeur et renvoie la valeur de l'expression d'origine au lieu de convertir l'opérande en valeur booléenne puis de la renvoyer.

1) Vrai lorsque l'objet est converti en valeur booléenne. Par exemple, un objet vide est logiquement associé à une valeur booléenne.

console.log(typeof ({} && true));  //返回第二个操作数的值  true的类型:布尔型
console.log(typeof (true && {}));  //返回第二个操作数的值  {}的类型:对象

2) Si l'opérande contient null, la valeur de retour est toujours nulle. Par exemple, l'opération ET logique de la chaîne « null » avec une valeur de type null renvoie toujours null quelle que soit la position.

console.log(typeof ("null" && null));  //返回null的类型:对象
console.log(typeof (null && "null"));  //返回null的类型:对象

3) Si l'opérande contient NaN, la valeur de retour est toujours NaN. Par exemple, l'opération ET logique de la chaîne « NaN » avec une valeur de type NaN renvoie toujours NaN quelle que soit la position.

console.log(typeof ("NaN" && NaN));  //返回NaN的类型:数值
console.log(typeof (NaN && "NaN"));  //返回NaN的类型:数值

4) Pour Infinity, il sera converti en vrai et participera aux opérations ET logiques comme les valeurs ordinaires.

console.log(typeof ("Infinity" && Infinity));  //返回第二个操作数Infinity的类型:数值
console.log(typeof (Infinity && "Infinity"));  //返回第二个操作数"Infinity"的类型:字符串

5) Si l'opérande contient undéfini, renvoie undéfini. Par exemple, l'opération ET logique de la chaîne « undéfini » avec une valeur de type undéfini renvoie toujours undéfini, quelle que soit la position.

console.log(typeof ("undefined" && undefined));  //返回undefined
console.log(typeof (undefined && "undefined"));  //返回undefined
Connaissances étendues : les opérations peu connues de && et __ dans ES6

Comme nous le savons tous, dans es6, l'opérateur logique && représente la condition, || représente la condition ou

let info = {
  name:"long",
  age:null
};

//&&
//info的name与age同时为真,则结果为真
if(info.name && info.age){
  console.log("与条件"); //与条件
}else{
  console.log("失败");
}

//||
//info的name或age,只要有一个为真,则结果为真
if(info.name || info.age){
  console.log("或条件"); //或条件
}else{
  console.log("失败");
}

à la place de if/else

Cependant, ils peuvent également être simplifiés au nom de if/else

let info = {name:"long"};

let name = info && info.name; //long

let isVip = false;
let vipPrice = isVip || 19;//19
decide() && true();

//如果decide()执行后为true,则执行true(),并输出true()的值;如果decide()执行后为false,则输出decide()执行后的结果,且不执行true()


//预计使用场景,有一个mongo查询条件where,当name存在时,匹配name数据
where= {age:19};
name && where.name = name;
decide() || false();

//如果decide()执行后为true,则执行decide(),并输出decide()的值,fasle()不执行;如果decide()执行后为false,则执行fasle(),且输出false()的结果
decide() && true() || fasle();

//如果decide()执行后为true,则执行true(),并输出true()的值;
//如果decide()执行后为false,则执行false(),并输出false()的值
[Recommandations associées : tutoriel vidéo javascript,

front-end web🎜]🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn