udy JavaScript 0416 - 1hr nollish 연산자
5410 단어 JavaScriptJavaScript
'??' (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
Author And Source
이 문제에 관하여(udy JavaScript 0416 - 1hr nollish 연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@toffg6450/Study-JavaScript-0415-1hr-g40iz03d
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
Author And Source
이 문제에 관하여(udy JavaScript 0416 - 1hr nollish 연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@toffg6450/Study-JavaScript-0415-1hr-g40iz03d저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)