무효 병합에 대해 알아야 할 모든 것
11490 단어 tutorialwebdevjavascriptbeginners
??
.진실과 거짓 가치
더 진행하기 전에 더 나은 이해를 위해 Javascript의 참 값과 거짓 값에 대해 알아야 합니다. 기본적으로
false
, 0
, -0
, BigInt(0n)
, empty string('' or "" )
, NaN
, null
, undefined
는 Javascript에서 .falsy 값으로 간주됩니다.이 외에는 짐작하신 대로 사실입니다.
이것을 기억하는 것이 중요합니다. nullish coalescing 뿐만 아니라 Javascript에 대해 더 깊이 파고들수록 매우 유용할 것입니다. 이것들이 거짓 값으로 취급된다는 것을 증명하려면 위에서 언급한 모든 거짓 값을
console.log
시도하십시오. 이렇게 👇, console.log(Boolean(0)) // would return false
전통 || 운영자
변수가 없는 경우 기본값을 설정하기 위해 논리 OR(
||
) 연산자를 사용한 적이 있습니까? 간단히 예를 들자면,
const obj = {
name : undefined
age : 45
}
console.log(obj.name || 'default name') // default name
위의 예에서 이름이 존재하지 않는 경우 기본값을 설정하는 것은 매우 간단합니다. 이 기술을 폴백 메커니즘이라고 하며 개발자가 자주 사용합니다.
그러나
||
연산자가 어떻게 작동하는지 아는 것이 중요합니다. 간단 해.|| 연산자는 첫 번째 진실 값을 확인합니다. 아래 예를 자세히 살펴보세요
let firstName = undefined
let secondName = null
let age = 0
let nickName = ''
let orignalName = 'Miller'
console.log(firstName || secondName || age || nickName || orignalName || true) // Miller
이제
Miller
대신 0
가 반환되는 이유는 무엇입니까? 🤔🤔orignalName
변수와 부울 true
을 제외하고 다른 모든 변수는 앞에서 말했듯이 거짓 값으로 간주되기 때문입니다.Think 💡
originalName
is returned eventhoughtrue
is also a truthy value
그러나
||
연산자를 ??
연산자로 바꾸려고 하면 0
가 반환됩니다.console.log(firstName ?? secondName ?? age ?? nickName ?? orignalName) // 0
무엇을 ?? 하다 ?
MDN 문서에 따르면 nullish 병합은 "왼쪽 피연산자가 null이거나 정의되지 않은 경우 오른쪽 피연산자를 반환하고 그렇지 않으면 왼쪽 피연산자를 반환하는 논리 연산자"입니다.
예를 들어,
const result = x ?? y ;
// In the above code,
// -> y is returned , only if x has null or undefined (not '').
// -> x is returned if it has values other than null or undefined (including '').
구문이 처음에는 혼란스러워 보입니다. 위의 예는 아래와 같습니다.
const result = (x!== undefined && x!== null) ? x : y;
이것은 Javascript의 삼항 연산자에 익숙하다면 이해가 될 것입니다. 그렇지 않은 경우MDN docs 을 참조하십시오.
??
의 가장 일반적인 사용 사례는 잠재적으로 정의되지 않은 변수에 대한 기본값을 설정하거나 제공하는 것입니다. 그게 무슨 뜻이야 ? 몇 가지 예를 더 살펴보겠습니다.Note 🧐
There are only two nullish values (null and undefined)
console.log(0 ?? 10) // 0 since neither of them is a nullish value
console.log(2 ?? 3) // 2 , since neither of them is a nullish value
console.log( null ?? 'john') // john , since null is a nullish value
console.log( undefined ?? 'john') // john , since undefined is also a nullish value
다만,
||
와 다른 경우는 다음과 같다.console.log(0 || 10) // 10 since, || operator looks for first truthy value, `0` being a falsy value is ignored and so 10 is printed
그렇다면 아래 코드(이전 예제 중 하나에서)가
0
를 반환하는 이유는 무엇입니까?console.log(firstName ?? secondName ?? age ?? nickName ?? orignalName) // 0
내가 분해하자 ,
firstName
는 undefined
, nullish 값이므로 secondName
로 이동합니다.secondName
는 null, nullish 값이므로 age
로 이동합니다.age
는 null 값이 아닌 0 이므로 age
를 반환합니다.말이 됩니까? 처음에는 혼란스러워 보이지만 익숙해지면 이해가 될 것입니다.
|| 대 ??
주요 차이점은,
||
는 첫 번째truthy
값??
는 첫 번째defined
값도전 😎
이해를 테스트하려면 아래로 스크롤하여 솔루션을 보기 전에 아래 연습에 대한 정답을 추측해 보십시오.
let groceries = {
item1: {
name: 'apple'
color: 'red',
quantity: 5
},
item2 : {
name: ''
color: undefined
quantity: null
}
}
console.log((groceries.item2.color ?? groceries.item1.price ?? groceries.item1.name) || groceries.item1.color)
솔루션 ✔️
당신의 대답이 사과라면, 축하합니다 🥳, 당신이 맞습니다. 잘못 생각했다면 걱정하지 마십시오. 이것은 익숙해지면 더 이해가 될 것입니다. 또한 이 튜토리얼이 당신을 혼란스럽게 할 경우 Nullish 병합에 대해 더 배우기 위해 몇 가지 추가 리소스를 제공할 것입니다.
제 글 읽어주셔서 감사합니다🙌🙌
추가 리소스 👉
Reference
이 문제에 관하여(무효 병합에 대해 알아야 할 모든 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nithish_13/everything-you-need-to-know-about-nullish-coalescing-3p63텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)