source

JavaScript 한 줄 'if' 문 - 최상의 구문, 이 대체 구문?

bestscript 2022. 11. 12. 08:30

JavaScript 한 줄 'if' 문 - 최상의 구문, 이 대체 구문?

단 한if문장은 유지관리성과 가독성에 적합하지 않습니다.

하지만 이건 어때?

if (lemons) { document.write("foo gave me a bar"); }

한층 더 압축이 되어, 전개하면, 곱슬곱슬한 괄호는 잊혀지지 않습니다.눈에 띄는 문제가 있습니까?그렇지 않다면 어떤 점을 고려해야 합니까?적어도 3진수 연산자만큼은 읽을 수 있을 것 같아요.3차 연산자는 가독성 때문에 별로 추천되지 않는 것 같습니다만, 그 결론이 만장일치는 아닌 것 같습니다.

제 안의 사악한 쌍둥이는 이것을 제안하고 싶어합니다. 비록 구문은 분명 그것을 의도하지 않았고, 아마도 나쁜 생각일 것입니다.

(syntax) ? document.write("My evil twin emerges"): "";

나는 그 합선행동을 본 적이 있다.&&에 익숙하지 않은 는 읽기 하기 위해 .

lemons && document.write("foo gave me a bar");  

는 개인적으로 한 쓰는 if괄호 없이 다음과 같이 입력합니다.

if (lemons) document.write("foo gave me a bar");

문장을 더 추가해야 할 경우 다음 줄에 문장을 넣고 괄호를 추가합니다.IDE는 자동 들여쓰기를 하기 때문에 이 방법에 대한 유지보수성에 대한 반대는 없습니다.

이렇게 씁니다.

(lemons) ? alert("please give me a lemonade") : alert("then give me a beer");

PHP에서 일반적으로 사용되는 다음 형식을 사용할 수 있습니다.

(lemon) ? document.write("foo gave me a bar") : document.write("if condition is FALSE");

이미 설명한 바와 같이 다음을 사용할 수 있습니다.

&& 스타일

lemons && document.write("foo gave me a bar");  

또는

괄호 없는 스타일

if (lemons) document.write("foo gave me a bar");

단락 리턴

1회선을 사용합니다.if단, 다음과 같이 브래킷이 없는 버전을 사용해야 합니다.

if (lemons) return "foo gave me a bar";

~하듯이

lemons && return "foo gave me a bar"; // does not work!

SyntaxError: Unexpected keyword 'return'

사용할 수 있습니다.

lemons ? alert("please give me a lemonade") : alert("then give me a beer");

"의 경우:lemons 맞다alert("please give me a lemonade")않은 경우, , 니니,,,alert("then give me a beer")

이 한 줄이 훨씬 깨끗해요.

if(dog) alert('bark bark');

난 이게 더 좋아.도움이 되기를 바라다

많은 사람들이 말했듯이, 실제 한 줄을 찾고 있다면 다음과 같습니다.

    if (Boolean_expression) do.something();

권장됩니다.하지만 if/else를 하고 싶다면 ternary가 당신의 친구입니다(또한 매우 멋집니다).

    (Boolean_expression) ? do.somethingForTrue() : do.somethingForFalse();

기타:

    var something = (Boolean_expression) ? trueValueHardware : falseATRON;

하지만, 저는 아주 멋진 예를 하나 보았습니다.@Peter-Osson에게 &&를 외치다

    (Boolean_expression) && do.something();

마지막으로 if 문이 아니라 map/reduce 또는 Promise.resolve() 중 하나를 사용하여 루프에서 실행하는 것도 즐겁습니다.@brunettdan에게 외치다

// 다른 간단한 예

 var a = 11;
 a == 10 ? alert("true") : alert("false");

나는 삼원 연산자를 사용하는 것을 옹호하는 많은 표와 함께 많은 답을 봐왔다.3항은 a) 대체 옵션이 있고 b) 단순한 조건으로부터 상당히 단순한 값을 반환하는 경우 매우 유용합니다.그렇지만.....

원래 질문에는 대안이 없었고, 단일(실제) 분기만 있는 3진 연산자는 사용자가 신뢰할 수 있는 답을 반환하도록 강요했습니다.

lemons ? "foo gave me a bar" : "who knows what you'll get back"

가장 일반적인 변종은lemons ? 'foo...' : ''true, false, truthy, false, null, nero, blank, empty(?가 없는 경우)에 관한 수많은 기사를 읽으면 알 수 있듯이 지뢰밭(minefield)에 진입할 수 있습니다.

삼원칙의 어떤 부분이 복잡해지면 당신은 보다 명확한 형태의 조건부로 하는 것이 좋다.

내가 투표한다고 말하기엔 너무 멀다.if (lemons) "foo".

(i === 0 ? "true" : "false")

사용할 때는 한 줄로 할 수도 있습니다.if블록은 다음과 같습니다.

if (blah)
    doThis();

또, 와도 사용할 수 있습니다.while루프

화살표 기능의 예:

let somethingTrue = true
[1,2,3,4,5].map(i=>somethingTrue && i*2)

약속:

Promise.resolve()
  .then(_=>checkTrueFalse && asyncFunc())
  .then(_=>{ .. })

그렇지 않은 경우:

if(somethingTrue) thenDo()

단순한 조건이라면 가능한 한 if(값)를 사용하는 것을 선호합니다.왜냐하면 if(값)라는 단어는 parantesis나 물음표보다 무슨 일이 일어나고 있는지 더 많이 알려주기 때문입니다.

**Old Method:**
if(x){
   add(x);
}
New Method:
x && add(x);

할당 작업도 둥근 괄호로 할 수 있습니다.

exp.includes('regexp_replace') && (exp = exp.replace(/,/g, '@&'));

언급URL : https://stackoverflow.com/questions/8860654/javascript-single-line-if-statement-best-syntax-this-alternative