ES2020 시리즈의 빈 값 병합 연산자'??'
a ?? b 결과는 다음과 같습니다.
x = (a !== null && a !== undefined) ? a : b;
다음은 좀 더 긴 예다.가령, 변수firstName,lastName,nickName은 각각 사용자의 이름, 성씨, 닉네임에 대응하는 사용자가 있습니다.만약 사용자가 어떤 값도 입력하지 않기로 결정한다면, 이 변수들은 모두 정의되지 않은 것일 수도 있다.
사용자 이름을 표시하려고 합니다. 이 세 변수 중 하나를 표시하고 설정된 값이 없으면 "Anonymous"를 표시합니다.
사용하라고??연산자는 정의된 첫 번째 변수를 선택합니다.
let firstName = null;
let lastName = null;
let nickName = "Supercoder";
// null/undefined
alert(firstName ?? lastName ?? nickName ?? "Anonymous"); // Supercoder
||과 비교또는 ||연산자는??연산자는 같은 방식으로 사용된다.이전 장에서 설명한 바와 같이, 우리는 위의 예시의???를 ||로 대체할 수 있다.같은 결과를 얻을 수도 있다.
중요한 차이점은 다음과 같습니다.
예를 들어, 다음과 같은 상황을 고려하십시오.
height = height ?? 100;
Height가 정의되지 않으면 100으로 지정합니다.||과 비교합니다.
let height = 0;
alert(height || 100); // 100
alert(height ?? 100); // 0
이 예에서height|100은 값이 0인 height를 설정하지 않은 (unset)로 간주하고null,undefined 및 기타 가짜 (falsy) 값과 동등하게 취급합니다.그래서 얻은 결과는 100이다.height ?? 100은height가null이나undefined가 확실할 때만 100을 되돌려줍니다.따라서,alert는 원래대로height값 0을 표시합니다.
어떤 행위가 더 좋은지는 특정한 사용 장면에 달려 있다.높이 0이 유효한 값일 때??연산자가 더 적합하다.
우선 순위
?? 연산자의 우선 순위가 상당히 낮음: MDN table 에서 5.
그래서,??대부분의 다른 연산 후에 = 와?이전에 연산을 진행하다.
만약 우리가 복잡한 표현식에서 사용해야 한다면??값을 가져오려면 괄호를 고려해야 합니다.
let height = null;
let width = null;
// :
let area = (height ?? 100) * (width ?? 50);
alert(area); // 5000
그렇지 않으면 괄호를 생략하면 * 의 우선 순위 비율은?높음, 우선 실행됩니다.연산 프로세스는 다음 표현식과 동일합니다.
//
let area = height ?? (100 * width) ?? 50;
여기에 또 하나의 관련 언어 등급의 제한이 있다.안전상의 이유로 금지장??연산자는 & & & & ||연산자와 함께 사용됩니다.
다음 코드는 구문 오류를 발생시킵니다.
let x = 1 && 2 ?? 3; // Syntax error
이 제한은 의심할 여지없이 논의할 가치가 있지만, 언어 규범에 추가된 것은 프로그래밍 오류를 피하기 위해서이다. 왜냐하면 사람들이 사용하기 시작했기 때문이다.대체 | |.이 문제를 해결하기 위해 괄호를 명확하게 사용할 수 있다.
let x = (1 && 2) ?? 3; //
alert(x); // 2
총결산빈 값 병합 연산자??목록에 정의된 값을 간단하게 얻을 수 있습니다.
변수에 기본값을 지정하는 데 사용됩니다.
// height null undefined , height 100
height = height ?? 100;
?? 연산자의 우선 순위가 매우 낮은데, 겨우 높습니까?및 =괄호가 명확하게 추가되지 않으면 | | 또는 & & 와 함께 사용할 수 없습니다.
ES2020 시리즈의 빈 값 병합 연산자'??'이 글은 여기까지입니다. 더 많은 ES2020 빈값 합병 연산자 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ES2020 시리즈의 빈 값 병합 연산자'??'빈 값 병합 연산자??목록의 첫 번째'정의된'변수를 가져오는 간단한 문법을 제공합니다. b 결과는 다음과 같습니다. 가령, 변수firstName,lastName,nickName은 각각 사용자의 이름, 성씨, 닉네임에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.