if-else 속기 사용 시 두 번째 표현 생략
제가 글을 써도 될까요?if else
없는 속기else
?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
내가 알아차린 건null
다른 것은 효과가 있기 때문입니다(근데 그 이유나 좋은 생각인지는 모르겠습니다).
편집: 제가 왜 이걸 시도해야 하는지 당황하신 분들도 계시네요.그건 순전히 호기심 때문이니 안심하세요.나는 자바스크립트를 만지작거리는 것을 좋아한다.
삼원 연산자를 사용하는 것은 매우 이례적입니다.일반적으로 다음과 같은 다른 작업 내에서 문이 아닌 표현으로 사용됩니다.
var y = (x == 2 ? "yes" : "no");
따라서 가독성을 위해(여러분이 하고 있는 일이 드물기 때문에) 원하지 않는 "else"를 피하기 위해 다음과 같이 제안합니다.
if (x==2) doSomething();
이것도 옵션입니다.
x==2 && dosomething();
dosomething()
이 호출되는 것은,x==2
true로 평가됩니다.이것을 쇼트 서킷이라고 부릅니다.
이런 경우에는 잘 쓰이지 않기 때문에 코드를 이렇게 쓰면 안 됩니다.다음과 같은 간단한 접근방식을 권장합니다.
if(x==2) dosomething();
항상 읽을 수 있는 코드를 작성해야 합니다.파일 크기가 걱정되면 여러 JS 압축기 중 하나를 사용하여 파일의 최소 버전을 만드십시오(예: Google의 Closure Compiler).
다른 옵션:
x === 2 ? doSomething() : void 0;
다른 작업을 수행하지 않을 경우 다음을 수행하십시오.
if (x==2) doSomething();
사용.null
삼원 표현의 한 갈래로 괜찮습니다.그리고 Javascript의 스테이트먼트로서 삼원표현도 괜찮습니다.
다만, 스타일상, 프로시저를 호출하는 것을 염두에 두고 있는 경우는, 이것을 다음과 같이 쓰는 것이 보다 명확합니다.기타:
if (x==2) doSomething;
else doSomethingElse
아니면, 당신 경우,
if (x==2) doSomething;
이 오래된 스레드에 약간의 추가..
내부 표현을 평가하는 경우for
/while
3진 연산자를 사용하여 루프하고 싶다.continue
또는break
그 결과 - 문제가 생길 것입니다. 왜냐하면 둘 다continue
&break
표현이 아니라 아무 가치도 없는 진술입니다.
이렇게 하면Uncaught SyntaxError: Unexpected token continue
for (const item of myArray) {
item.value ? break : continue;
}
스테이트먼트를 반환하는 원라이너를 사용하는 경우는, 다음의 순서를 대신 사용할 수 있습니다.
for (const item of myArray) {
if (item.value) break; else continue;
}
- 추신 - 이 코드가 눈살을 찌푸리게 할 수도 있습니다.그냥...:)
기술적으로는 null 또는 0 또는 임의의 값만 입력하면 됩니다(반환값을 사용하지 않기 때문에).그런데 왜 이 구성을 사용하는 거죠?if
구축하시겠습니까?이 방법으로 코드를 작성하면 no-op(이 경우는 null)과 혼동될 수 있기 때문에, 무엇을 하려고 하는지는 명확하지 않습니다.
아마도 최단(OR 연산자 및 그 우선순위에 따라 다름)
x-2||dosomething()
let x=1, y=2;
let dosomething = console.log;
x-2||dosomething('x do something');
y-2||dosomething('y do something');
언급URL : https://stackoverflow.com/questions/11069278/omitting-the-second-expression-when-using-the-if-else-shorthand
'source' 카테고리의 다른 글
Python에서 목록의 키와 빈 값을 사용하여 dict를 초기화하려면 어떻게 해야 합니까? (0) | 2022.10.20 |
---|---|
iOS에서의 Dellphi XE6 링크 C 코드 (0) | 2022.10.20 |
Java Long 프리미티브 유형 최대 제한 (0) | 2022.10.20 |
MySQL에서 열의 데이터 유형을 변경하려면 어떻게 해야 합니까? (0) | 2022.10.20 |
Larabel에서 신규 사용자 등록을 해제하는 방법 (0) | 2022.10.20 |