Programing

if-else 속기를 사용할 때 두 번째 표현식 생략

lottogame 2020. 3. 23. 08:03
반응형

if-else 속기를 사용할 때 두 번째 표현식 생략


if else없이 속기를 쓸 수 있습니까 else?

var x=1;

x==2 ? dosomething() : doNothingButContinueCode();   

나는 null다른 작품을 넣는 것을 보았습니다 (그러나 그것이 왜 좋은 아이디어인지는 알 수 없습니다).

편집 : 당신 중 일부는 내가 이것을 시도하는 것을 귀찮게 한 것처럼 보입니다. 순전히 호기심에서 벗어났습니다. 나는 JavaScript를 뒤섞는 것을 좋아한다.


이것은 또한 옵션입니다.

x==2 && dosomething();

dosomething()x==2true로 평가 된 경우에만 호출됩니다 . 이것을 단락 이라고 합니다.

이런 경우에는 일반적으로 사용되지 않으며 실제로 이와 같은 코드를 작성해서는 안됩니다. 이 간단한 접근 방식을 권장합니다.

if(x==2) dosomething();

항상 읽을 수있는 코드를 작성해야합니다. 파일 크기가 걱정된다면 많은 JS 압축기 중 하나를 사용하여 축소 된 버전을 만드십시오. (예 : Google의 폐쇄 컴파일러 )


당신이 가진 것은 삼항 연산자를 상당히 비정상적으로 사용하는 것입니다 . 일반적으로 다음과 같은 다른 작업 내에서 명령문이 아닌 식으로 사용됩니다.

var y = (x == 2 ? "yes" : "no");

따라서 가독성을 높이기 위해 (당신이하는 일이 드물기 때문에) 원하지 않는 "다른 것"을 피하기 때문에 다음과 같이 제안합니다.

if (x==2) doSomething();

다른 옵션 :

x === 2 ? doSomething() : void 0;

다른 것을하고 있지 않다면 왜하지 마십시오.

if (x==2) doSomething();

null삼항식의 가지 중 하나에 사용하는 것이 좋습니다. 그리고 삼항식은 자바 스크립트의 문장으로 좋습니다.

스타일의 문제로, 프로 시저를 호출하는 것을 염두에두고 if..else를 사용하여 작성하는 것이 더 명확합니다.

if (x==2) doSomething;
else doSomethingElse

또는 귀하의 경우

if (x==2) doSomething;

이 아주 오래된 스레드에 작은 추가 ..

의는 내부 your'e을 가정 해 봅시다 for루프와의 변수를 평가해야 truthy/falsy경우가있는 동안, 삼항 연산자의 값 falsy에 원하는 continue- your'e는 반환하지 않습니다 때문에 당신은 문제가 있다면 곧 식을 , 당신은 대신 반환 이없는 모든 가치.

이것은 생산할 것이다 Uncaught SyntaxError: Unexpected token continue

 for (var i = 0; i < myArray.length; i++) {
      myArray[i].value ? alert('yay') : continue;
 }

따라서 명령문을 반환하고 코드에 여전히 한 줄을 사용하려면 언뜻보기에는 이상하게 보일 수 있고 엄격한 언어 사용법을 따르지 않을 수 있습니다. 대신이 작업을 수행 할 수 있습니다.

  for (var i = 0; i < myArray.length; i++) {
      if (myArray[i].value) alert('yay') ; else continue;
  }
  • PS-이 코드는 읽거나 이해하기 어려울 수 있으므로 항상 최선의 선택은 아닙니다. 그냥 .. :)

기술적으로 null 또는 0 또는 임의의 이 있으면 반환 값을 사용하지 않으므로 작동합니다. 그러나 왜 구문 대신이 구문을 사용하고 if있습니까? 이런 방식으로 코드를 작성할 때 수행하려는 작업이 명확하지 않습니다. 사람들을 no-op와 혼동 할 수 있습니다 (귀하의 경우 널임).


아마도 가장 짧은

x-2||dosomething()

let x=1, y=2;
let dosomething = s=>console.log(s); 

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

반응형