ES2020 시리즈의 빈 값 병합 연산자'??'

3171 단어 ES2020빈 값 병합
빈 값 병합 연산자??목록의 첫 번째'정의된'변수를 가져오는 간단한 문법을 제공합니다. (즉, 값은null이나undefined 변수가 아닙니다.)
a ?? b 결과는 다음과 같습니다.
  • a, 만약에 a가null 또는undefined가 아니라면,
  • b, 기타 상황.
  • 그래서 x=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
    
    
    ||과 비교
    또는 ||연산자는??연산자는 같은 방식으로 사용된다.이전 장에서 설명한 바와 같이, 우리는 위의 예시의???를 ||로 대체할 수 있다.같은 결과를 얻을 수도 있다.
    중요한 차이점은 다음과 같습니다.
  • | | 첫 번째 실제 값을 반환합니다.
  • ?? 첫 번째 정의된 값을 되돌려줍니다.
  • 우리가null/undefined와 0을 구별하고 싶을 때, 이 차이는 매우 중요하다.
    예를 들어, 다음과 같은 상황을 고려하십시오.
    
    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 빈값 합병 연산자 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기