>웹 프론트엔드 >프런트엔드 Q&A >es6에 앰퍼샌드가 있나요?

es6에 앰퍼샌드가 있나요?

青灯夜游
青灯夜游원래의
2022-11-01 19:24:251321검색

에는 앰퍼샌드가 있습니다. es6에서 "&&"는 AND 부울 연산인 논리 AND 연산자입니다. 구문은 "피연산자 1 && 피연산자 2"입니다. 두 피연산자가 모두 true인 경우에만 true를 반환하고, 그렇지 않으면 false를 반환합니다. 논리 AND는 일종의 단락 논리(Short-circuit logic)입니다. 왼쪽의 식이 거짓이면 결과는 바로 단락되어 반환되며, 오른쪽의 표현식은 더 이상 평가되지 않습니다.

es6에 앰퍼샌드가 있나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.

es6에는 & 기호가 있고 "&&"는 논리 AND 연산자입니다.

논리 AND 연산 &&

논리 AND 연산(&&)은 AND 부울 연산입니다. 두 피연산자가 모두 true인 경우에만 true를 반환하고, 그렇지 않으면 false를 반환합니다. 자세한 설명은 표에 나와 있습니다.

false
논리 AND 연산
첫 번째 피연산자 두 번째 피연산자 연산 결과
true true true
true 거짓 거짓
거짓 false
false false false

    논리적 AND는 일종의 단락논리인데, 왼쪽의 식이 false라면 결과는 단락되어 버립니다. 오른쪽에는 추가 작업 없이 반환됩니다. 연산 논리는 다음과 같습니다.
  • 1단계: 첫 번째 피연산자(왼쪽 표현식)의 값을 계산합니다.
  • 2단계: 첫 번째 피연산자의 값을 감지합니다. 왼쪽 표현식의 값이 false로 변환될 수 있는 경우(예: null, 정의되지 않음, NaN, 0, "", false) 연산이 종료되고 첫 번째 피연산자의 값이 직접 반환됩니다.
  • 3단계: 첫 번째 피연산자를 true로 변환할 수 있으면 두 번째 피연산자(오른쪽 표현식)를 평가합니다.
  • 4단계: 두 번째 피연산자의 값을 반환합니다.

예제 1

다음 코드는 논리 AND 연산을 사용하여 변수를 감지하고 초기화합니다.

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

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

와 동일합니다. user 변수의 값이 0이거나 빈 문자열과 같은 false 값이 부울 값으로 변환되면 false가 됩니다. 그런 다음 변수에 값이 할당된 후에는 해당 값이 적용됩니다. 여전히 변수에 값이 할당되지 않았다는 메시지가 표시됩니다. 따라서 설계 시 논리 AND의 왼쪽 표현식의 반환 값이 예측 가능한 값인지 확인해야 합니다.

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

오른쪽 표현식에는 할당, 증가, 감소 및 함수 호출과 같은 유효한 연산이 포함되어서는 안 됩니다. 왜냐하면 왼쪽 표현식이 false인 경우 오른쪽 표현식을 직접 건너뛰어 잠재적인 위험이 있을 수 있기 때문입니다. 후속 작업에 영향을 미칩니다.

예 2

논리 AND 연산자를 사용하면 여러 분기 구조 설계를 대체할 수 있습니다.

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

위 코드는 다음 다중 브랜치 구조와 동일합니다.

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

논리 AND 연산의 피연산자는 모든 유형의 값일 수 있으며 피연산자를 부울 값으로 변환한 다음 반환하는 대신 원래 표현식의 값을 반환합니다.

1) 객체가 부울 값으로 변환되면 True입니다. 예를 들어, 빈 객체는 부울 값과 논리적으로 AND됩니다.

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

2) 피연산자에 null이 포함되어 있으면 반환 값은 항상 null입니다. 예를 들어, null 유형의 값을 갖는 문자열 "null"의 논리적 AND 연산은 위치에 관계없이 항상 null을 반환합니다.

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

3) 피연산자에 NaN이 포함되어 있으면 반환 값은 항상 NaN입니다. 예를 들어 NaN 유형의 값을 갖는 문자열 "NaN"의 논리적 AND 연산은 위치에 관계없이 항상 NaN을 반환합니다.

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

4) Infinity의 경우 true로 변환되어 일반 값과 ​​마찬가지로 논리 AND 연산에 참여하게 됩니다.

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

5) 피연산자에 정의되지 않은 값이 포함되어 있으면 정의되지 않은 값을 반환합니다. 예를 들어, undefed 유형의 값을 갖는 "undefine" 문자열의 논리적 AND 연산은 위치에 관계없이 항상 undefound를 반환합니다.

console.log(typeof ("undefined" && undefined));  //返回undefined
console.log(typeof (undefined && "undefined"));  //返回undefined
확장된 지식: ES6에서 잘 알려지지 않은 && 및 __ 연산

우리 모두 알고 있듯이 es6에서 논리 연산자 &&는 조건을 나타내고 ||는 대신 or 조건을 나타냅니다

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("失败");
}

of if/ else

그러나 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()的值
를 대신하여 단순화할 수도 있습니다.[관련 권장 사항: javascript 비디오 튜토리얼,

웹 프론트 엔드🎜]🎜

위 내용은 es6에 앰퍼샌드가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.