옵션 체인 ?.
및 Nullish Coalescing??
당신은 지금 직접 사용할 수 있습니다 ?.
인라인을 하여 존재 여부를 안전하게 테스트 . 모든 최신 브라우저가이를 지원합니다.
??
undefined 또는 null 인 경우 기본값을 설정하는 데 사용할 수 있습니다.
aThing = possiblyNull ?? aThing
aThing = a?.b?.c ?? possiblyNullFallback ?? aThing
속성이 존재 ?.
하면 다음 확인으로 진행하거나 유효한 값을 반환합니다. 모든 고장은 즉시 단락되어 복귀 undefined
합니다.
const example = {a: ["first", {b:3}, false]}
example?.a // ["first", {b:3}, false]
example?.b // undefined
example?.a?.[0] // "first"
example?.a?.[1]?.a // undefined
example?.a?.[1]?.b // 3
domElement?.parentElement?.children?.[3]?.nextElementSibling
null?.() // undefined
validFunction?.() // result
(() => {return 1})?.() // 1
기본 정의 된 값을 보장하기 위해을 사용할 수 있습니다 ??
. 첫 번째 진실한 값이 필요한 경우을 사용할 수 있습니다 ||
.
example?.c ?? "c" // "c"
example?.c || "c" // "c"
example?.a?.[2] ?? 2 // false
example?.a?.[2] || 2 // 2
사례를 확인하지 않으면 왼쪽 속성이 존재해야합니다. 그렇지 않으면 예외가 발생합니다.
example?.First // undefined
example?.First.Second // Uncaught TypeError: Cannot read property 'Second' of undefined
?.
브라우저 지원 -78 %, 2020 년 7 월
??
브라우저 지원 -78 %
모질라 문서
-
논리적 인 무효 할당, 2020+ 솔루션
신규 사업자는 현재 브라우저에 추가되고 ??=
, ||=
하고 &&=
. 그들은 당신이 찾고있는 것을하지 않지만 코드의 목적에 따라 동일한 결과를 초래할 수 있습니다.
참고 : 공용 브라우저 버전에서는 아직 일반적이지 않지만 Babel은 잘 변환됩니다. 가용성이 변경되면 업데이트됩니다.
??=
왼쪽이 정의되지 않았는지 또는 null인지 확인하고 이미 정의 된 경우 단락합니다. 그렇지 않으면 왼쪽에 오른쪽 값이 할당됩니다. ||=
그리고 &&=
온 유사하지만 기반 ||
및 &&
운영.
기본 예
let a // undefined
let b = null
let c = false
a ??= true // true
b ??= true // true
c ??= true // false
객체 / 배열 예
let x = ["foo"]
let y = { foo: "fizz" }
x[0] ??= "bar" // "foo"
x[1] ??= "bar" // "bar"
y.foo ??= "buzz" // "fizz"
y.bar ??= "buzz" // "buzz"
x // Array [ "foo", "bar" ]
y // Object { foo: "fizz", bar: "buzz" }
브라우저 지원 2020 년 7 월-.03 %
모질라 문서
if( obj?.nested?.property?.value )
대신에if( obj && obj.nested && obj.nested.property && obj.nested.property.value )