에는 앰퍼샌드가 있습니다. es6에서 "&&"는 AND 부울 연산인 논리 AND 연산자입니다. 구문은 "피연산자 1 && 피연산자 2"입니다. 두 피연산자가 모두 true인 경우에만 true를 반환하고, 그렇지 않으면 false를 반환합니다. 논리 AND는 일종의 단락 논리(Short-circuit logic)입니다. 왼쪽의 식이 거짓이면 결과는 바로 단락되어 반환되며, 오른쪽의 표현식은 더 이상 평가되지 않습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
es6에는 & 기호가 있고 "&&"는 논리 AND 연산자입니다.
논리 AND 연산 &&
논리 AND 연산(&&)은 AND 부울 연산입니다. 두 피연산자가 모두 true인 경우에만 true를 반환하고, 그렇지 않으면 false를 반환합니다. 자세한 설명은 표에 나와 있습니다.
첫 번째 피연산자 | 두 번째 피연산자 | 연산 결과 |
---|---|---|
true | true | true |
true | 거짓 | 거짓 |
거짓 | 참 | false |
false | false | false |
예제 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("失败");
}
그러나 if/elselet 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!