development

JavaScript로 인라인 IF 문을 작성하는 방법은 무엇입니까?

big-blog 2020. 3. 30. 08:49
반응형

JavaScript로 인라인 IF 문을 작성하는 방법은 무엇입니까?


ifJavaScript에서 인라인 문을 사용하려면 어떻게 해야합니까? 인라인 else문도 있습니까?

이 같은:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}

반드시 jQuery가 필요하지는 않습니다. JavaScript만으로도 가능합니다.

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

c변수 것 minor값 인 경우 true, 및 major값이면 false.


이것을 조건부 (삼항) 연산자라고합니다.

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator


if명령문을 인라인으로 작성 하려면 코드 내부의 코드는 하나의 명령문이어야합니다.

if ( a < b ) // code to be executed without curly braces;

다음과 같이 삼항 연산자가 있습니다.

var c = (a < b) ? "a is less than b"  : "a is not less than b";

논리 연산자 만 사용하여 if / else를 근사화 할 수도 있습니다.

(a && b) || c

위의 내용은 다음과 같습니다.

a ? b : c

그리고 물론 대략 다음과 같습니다.

if ( a ) { b } else { c }

나는이 접근법에 하나의 차이점이 있기 때문에 대충 말합니다.의 가치가 b참으로 평가 된다는 것을 알아야 합니다. 그렇지 않으면 항상 얻을 것 c입니다. 근본적으로 당신은 나타날 if () { here }부분이 이제 당신이 놓은 조건 의 일부라는 것을 알아야합니다 if ( here ) { }.

논리식을 형성 한 원래 값 중 하나를 전달 / 반환하는 JavaScript 동작으로 인해 위와 같은 것이 가능합니다. 이는 연산자의 유형에 따라 다릅니다. PHP와 같은 다른 언어는 연산의 실제 결과, 즉 true 또는 false를 수행합니다. 즉, 결과는 항상 true 또는 false입니다. 예 :

14 && 0          /// results as 0,  not false
14 || 0          /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4,  not true
true && ''       /// results as ''
{} || '0'        /// results as {}

일반적인 if 문과 비교할 때 한 가지 주요 이점은 처음 두 가지 방법이 인수의 오른쪽에서 즉 할당의 일부로 작동 할 수 있다는 것입니다.

d = (a && b) || c;
d = a ? b : c;

if `a == true` then `d = b` else `d = c`

표준 if 문으로이를 달성하는 유일한 방법은 어설 션을 복제하는 것입니다.

if ( a ) { d = b } else { d = c }

당신이 확인 하고 싶지만 사실 이 아닌 한, 아마도 당신이하지 않을 간단한 경우에 대해 , 삼항 연산자 대신 논리 연산자사용하는 이유를 물을 수 있습니다 . 또한 논리 연산자를 사용하여보다 간소화 된 복잡한 조건을 달성 할 수 있습니다.이 연산자는 중첩 된 삼항 연산을 사용하면 혼란 스러울 수 있습니다. 그런 다음 코드를 쉽게 읽을 수있게하려면 직관적이지 않습니다.ab


평범한 영어로, 문법은 다음과 같이 설명했다 :

if(condition){
    do_something_if_condition_is_met;
}
else{
    do_something_else_if_condition_is_not_met;
}

다음과 같이 쓸 수 있습니다 :

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;

<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );

ELSE없이 인라인 IF를 원할 경우 논리 AND 연산자를 사용할 수 있습니다.

(a < b) && /*your code*/;

ELSE도 필요한 경우 다른 사람들이 제안한 삼항 연산을 사용하십시오.


JavaScript에서 다음과 같이 할 수 있습니다.

a < b ? passed() : failed();

종종 다음을 사용하여 조건 당 더 많은 코드를 실행해야합니다 ( , , ).

var a = 2;
var b = 3;
var c = 0;

( a < b ?  ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );

참고로, 조건부 연산자를 작성할 수 있습니다

var a = (truthy) ? 1 : (falsy) ? 2 : 3;

논리가 충분히 복잡한 경우 IIFE 사용을 고려할 수 있습니다

var a = (function () {
  if (truthy) return 1;
  else if (falsy) return 2;
  return 3;
})();

물론,이 로직을 두 번 이상 사용하려는 경우,이를 멋지게 유지하기위한 함수로 캡슐화해야합니다.


여기에 && 및 ||를 사용하여 인라인 if 조건을 사용할 수도 있습니다. 연산자. 이렇게

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";

본질적으로 질문이 아닙니까 : 다음을 쓸 수 있습니까?

if (foo)
  console.log(bar)
else
  console.log(foo + bar)

대답은 그렇습니다. 위의 내용은 번역 될 것입니다.

그러나 다음을주의하십시오.

if (foo)
  if (bar)
    console.log(foo)
  else 
    console.log(bar)
else 
  console.log(foobar)

위와 같은 예외가 발생하므로 모호한 코드를 중괄호로 묶어야합니다 (유사한 순열로 인해 원치 않는 동작이 발생 함).

참고 URL : https://stackoverflow.com/questions/10270351/how-to-write-an-inline-if-statement-in-javascript

반응형