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


286

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

이 같은:

var a = 2;
var b = 3;

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

12
jQuery는 어디에 있습니까? 어쨌든 나는 그 질문을 정말로 이해하지 못한다.
Marc

jquery 부분은 다음과 같습니다 $ (document) .ready (function () {var a = 2; var b = 3; if (a <b) {// 뭔가를}});
takeItEasy

그것의 knockoutjs 질문도
Martin Capodici

1
그것은 또한 각도 1과 2이며 다른 모든 js 프레임 워크 (vanilla.js 포함)입니다.
Ben Taliadoros

답변:


641

반드시 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


59
인라인 IF를 사용하여 질문에 정확하게 답변하는 방법을 보여줍니다.
MattW

26
참고 로이 경우 모든 파란은 선택 사항입니다. 사용시기를 결정하는 것은 종종 개인 취향 / 코딩 스타일입니다.
Will Klein

3
@khany, 이것은 JavaScript 질문입니다. 다른 언어에서는식이 다르게 평가 될 수 있습니다.
Will Klein

1
@MattW 이것은 인라인 IF를 사용하는 방법을 보여주지 않고 IF ELSE를 사용하는 방법을 보여줍니다
Finlay Percy

1
@getName은 실제로는 아니지만 원한다면 한 줄 if 문을 사용할 수 있습니다.if (a < b) c = 'major';
MattW

44

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

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

43

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

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

4
실제로는 아무것도 할당 할 필요가 없습니다. 오른쪽 요소는 단순히 함수 호출 일 수 있습니다.
jfriend00

7
그것들은 함수 호출 일 필요조차 없습니다 ... 0 < 1 : 5 : 120;완벽한 유효한 진술입니다. 그러나 한 줄에 지불하지 않으면 약간 쓸모가 없습니다.
Ry-

좋아, @ jfriend00, minitech, 팁 주셔서 감사합니다.
Mahmoud Gamal

@ jfriend00 그래도 거의 모든 경우에 반대합니다. 표현식의 값을 사용하지 않는다면 실제로 원하는 것은 부작용입니다. 부작용은 진술 에 큰 도움이됩니다. if이러한 경우에 평범한 오래된 지루한 진술을 사용하면 코드를 읽고 이해하기가 훨씬 쉬워지고 나중에 변경 될 때 깨지지 않을 것입니다.
Emil Lundberg

35

논리 연산자 만 사용하여 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모두 사실. 또한 논리 연산자를 사용하여보다 간소화 된 복잡한 조건을 달성 할 수 있습니다.이 연산자는 중첩 된 삼항 연산을 사용하면 상당히 혼란 스러울 수 있습니다. 그런 다음 코드를 쉽게 읽을 수있게하려면 직관적이지 않습니다.


32

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

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;

5
"else"문없이이 작업을 수행 할 수 있습니까? 즉condition ? true
악마의 옹호자

@ScottBeeson 물론입니다. 또한 사용 조건에 따라 다릅니다. true false그리고 ""모든 다른 부분을 무시하는 잘해야한다.
Onimusha

그래서 2 == 2 ? doSomething()같은 것 if (2 == 2) doSomething()입니까?
악마의 옹호자

1
예, 그러나 else 부분은 완전히 생략 할 수 없습니다. 자바 스크립트가 이것을 기대하고 : false있거나 임대 : ""해야합니다.
오니 무샤

5
오. 그래서 그건 하지 else 문없이 그것을 할 수 있습니다.
악마의 옹호자

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

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

48
내가 무엇을 읽었는지조차 모르지만, 나는 꽤 열심히 웃고 있습니다.
재즈

20

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

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

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


17

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

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

8

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

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

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

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

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


6

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

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 ) );

4

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

var a = 2;
var b = 0;

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

0

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

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)

위와 같은 예외가 발생하므로 모호한 코드를 중괄호로 묶어야합니다.


0

인라인 인 경우 :

(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')

진실한 결론 : 가설이 참일 때 실행되는 진술

잘못된 결론 : 가설이 거짓 일 때 실행되는 진술

당신의 예 :

var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.