udy JavaScript 0416-1 hr nollish演算子


'??' (nullish連結演算子)

  • '??' (nullish連結演算子)は、複数の被演算子の値が「決定(割り当て)された変数」であることを示すフレーズ法です.
    a ?? b:a nullでもundefinedでもない、a、その他の場合b
    “?”同じコードで表すと、以下のようになります.
  • 	x = (a !== null && a !== undefined) ? a : b;
  • '??'「|」との区別
    '??'最初の「定義された値」を返します.
    「||」は、最初の「true」値を返します.
    この違いはnullとundefinedと0を区別しなければならない場合に重要な役割を果たす.
  • 	height = height ?? 100;	// height에 값이 정의되지 않은 경우 100이 할당됨
        
        let height = 0;
    
        alert(height || 100); // 100, 0은 false취급을 받았기 때문에 100이 출력
        alert(height ?? 100); // 0, 0이라는 값이 있기에 height값인 0이 출력
  • 演算子優先度
    ?? の演算子の優先度は5=わあ?ほとんどの演算子ではなく、まず評価し、次に評価します.
    したがって、使用時には()を追加することが望ましい.
    ★余分な安定性のため??&、|と一緒に使用できません.
  • 	let height = null;
    	let width = null;
    
        // 1. 괄호를 추가해서 사용한다
        let area = (height ?? 100) * (width ?? 50);
    
        alert(area); // 5000
        
        
        // 2. ()를 사용하지 않은 원치 않는 결과
    	let area2 = height ?? (100 * width) ?? 50;
        
        alert(area); // 0
        
        // 3. &&와 ||를 함께 사용하지 못함
        let x = 1 && 2 ?? 3; // SyntaxError: Unexpected token '??'
        
        let x2 = (1 && 2) ?? 3; // 제대로 동작한다.
    
    	alert(x2); // 2