source

if-else 속기 사용 시 두 번째 표현 생략

lovecheck 2022. 10. 20. 21:59
반응형

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==2true로 평가됩니다.이것을 쇼트 서킷이라고 부릅니다.

이런 경우에는 잘 쓰이지 않기 때문에 코드를 이렇게 쓰면 안 됩니다.다음과 같은 간단한 접근방식을 권장합니다.

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/while3진 연산자를 사용하여 루프하고 싶다.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

반응형