선택적 체이닝이 JavaScript에 올 수 있습니다.
4782 단어 ecmascripttc39javascript
다음은 repo with all the info you need 입니다.
그것은 무엇입니까?
선택적 연결을 사용하면 속성에 액세스하기 전에 객체가 존재하는지 확인할 수 있습니다. 다른 언어에도 비슷한 것이 있습니다. 예를 들어 C#에는 제안된 선택적 연결과 매우 유사하게 동작하는 Null 조건부 연산자가 있습니다.
왜 필요합니까?
속성에 액세스하기 전에 객체나 배열의 존재를 확인해야 했던 적이 있습니까? 잊어버리면 다음과 같이 보일 수 있습니다.
if(specimen && specimen.arms && specimen.arms.length > 2)
console.log("This is probably an alien");
이러한 검사를 수행하는 이유는 JavaScript에서 구조나 스키마가 반드시 필요하지 않은 익명 객체를 허용하기 때문입니다. 따라서 개체 트리에서 부모를 확인하지 않으면 다음과 같은 많은 오류가 발생합니다.
적어도 오류의 경우에는
specimen
가 존재하지만 arms
속성이 없기 때문입니다. 따라서 우리는 length
인 것을 undefined
얻으려고 했습니다.그래서, 제안은 무엇입니까?
그 모든 것 대신 다음과 같이 선택적 검사를 연결할 수 있습니다.
if(specimen?.arms?.length > 2)
console.log("This is probably an alien");
그러나 옵셔널 체이닝 연산자는
?.
가 아니라 ?
라는 점을 명심하세요. 즉, 이를 사용하여 배열의 항목에 액세스할 때 다음과 같이 표시됩니다.var firstArm = specimen?.arms?.[0]; //CORRECT
var secondArm = specimen?.arms?[1]; //WRONG
마찬가지로 함수의 존재를 확인하기 위해 사용할 때:
var kickPromise = specimen?.kick?.(); //CORRECT
var punchPromise = specimen?.punch?(); //WRONG
이 경우 함수로 호출하기 전에
kick
가 있는지 확인합니다!어떻게 작동합니까?
운영자는
?.
의 왼쪽에 있는 것이 null
또는 undefined
인지 확인합니다. 그렇다면 표현식이 단락되어 undefined
를 반환합니다. 그렇지 않으면 식은 잘못된 것이 없는 것처럼 계속 평가됩니다.언제 사용할 수 있습니까?
음, 여전히 제안이므로 아직 Vanilla JavaScript에는 없습니다. 그러나 사용할 수 있다with Babel!
제안 상태를 최신 상태로 유지하고 더 깊이 이해하고 몇 가지 예를 확인하려면 their GitHub repo을 확인해야 합니다! specs here 도 찾을 수 있지만 대부분의 문서가 머리를 스쳐 지나가기 때문에 다루지 않겠습니다 😅
고맙습니다!
천만에요! ❤️
Reference
이 문제에 관하여(선택적 체이닝이 JavaScript에 올 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sammyisa/optional-chaining-may-be-coming-to-javascript--4ff0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)