if-else 속기를 사용할 때 두 번째 표현식 생략
if else
없이 속기를 쓸 수 있습니까 else
?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
나는 null
다른 작품을 넣는 것을 보았습니다 (그러나 그것이 왜 좋은 아이디어인지는 알 수 없습니다).
편집 : 당신 중 일부는 내가 이것을 시도하는 것을 귀찮게 한 것처럼 보입니다. 순전히 호기심에서 벗어났습니다. 나는 JavaScript를 뒤섞는 것을 좋아한다.
이것은 또한 옵션입니다.
x==2 && dosomething();
dosomething()
x==2
true로 평가 된 경우에만 호출됩니다 . 이것을 단락 이라고 합니다.
이런 경우에는 일반적으로 사용되지 않으며 실제로 이와 같은 코드를 작성해서는 안됩니다. 이 간단한 접근 방식을 권장합니다.
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');
'Programing' 카테고리의 다른 글
Swift에서 객체의 클래스 이름을 문자열로 가져옵니다. (0) | 2020.03.23 |
---|---|
Vim 내부에서 터미널을 어떻게 실행합니까? (0) | 2020.03.23 |
동사없이 REST URL을 작성하는 방법은 무엇입니까? (0) | 2020.03.23 |
일부 컴퓨터에서 TransactionScope가 MSDTC로 자동 에스컬레이션됩니까? (0) | 2020.03.23 |
Java에서 AtomicReference를 언제 사용합니까? (0) | 2020.03.23 |