수색…


소개

if 및 else와 같은 키워드를 포함하는 조건식을 사용하면 JavaScript 프로그램에 부울 조건에 따라 다른 작업 (예 : true 또는 false)을 수행 할 수 있습니다. 이 섹션에서는 JavaScript 조건문, 부울 논리 및 삼항 구문의 사용에 대해 설명합니다.

통사론

  • if ( condition ) ;
  • if ( condition ) statement_1 , statement_2 , ... , statement_n ;
  • if ( condition ) {
    성명서
    }
  • if ( condition ) {
    statement_1 ;
    statement_2 ;
    ...
    statement_n ;
    }
  • if ( condition ) {
    성명서
    } else {
    성명서
    }
  • if ( condition ) {
    성명서
    } else if ( 조건 ) {
    성명서
    } else {
    성명서
    }
  • 스위치 ( 표현 ) {
    사례 값 1 :
    성명서
    [단절;]
    사례 값 2 :
    성명서
    [단절;]
    대소 문자 N :
    성명서
    [단절;]
    태만:
    성명서
    [단절;]
    }
  • 조건 ? value_for_true : value_for_false ;

비고

조건은 표현식 값을 기반으로 코드를 실행하여 정상적인 프로그램 흐름을 중단시킬 수 있습니다. JavaScript에서는 if , else ifelse 문 및 삼항 연산자를 사용 if 것을 의미합니다.

If / Else If / Else Control

가장 간단한 형식에서 if 조건을 다음과 같이 사용할 수 있습니다.

var i = 0;

if (i < 1) {
    console.log("i is smaller than 1");
}

조건 i < 1 이 평가되고, true 평가되면 뒤 따르는 블록이 실행됩니다. false 평가되면 블록을 건너 뜁니다.

if 조건은 else 블록으로 확장 할 수 있습니다. 위와 같이 조건을 한 번 확인하고 false 로 평가하면 보조 블록이 실행됩니다 (조건이 true 건너 뜁니다). 예 :

if (i < 1) {
    console.log("i is smaller than 1");
} else {
    console.log("i was not smaller than 1");
}

가정하면 else 블록은 다른 아무것도 포함하지 않는 if (선택적으로 블록 else 이 같은 블록) :

if (i < 1) {
    console.log("i is smaller than 1");
} else {
    if (i < 2) {
        console.log("i is smaller than 2");
    } else {
        console.log("none of the previous conditions was true");
    }
}

그런 다음 중첩을 줄이는 다른 방법도 있습니다.

if (i < 1) {
    console.log("i is smaller than 1");
} else if (i < 2) {
    console.log("i is smaller than 2");
} else {
    console.log("none of the previous conditions was true");
}

위의 예에 대한 중요한 각주 :

  • 하나의 조건이 true 으로 평가되면 해당 블록 체인에서 다른 조건이 평가되지 않고 해당 블록 ( else 블록 포함)이 실행되지 않습니다.

  • else if 부분의 수는 실질적으로 무제한입니다. 위의 마지막 예는 하나만 포함하고 있지만 원하는 수만큼 가질 수 있습니다.

  • if 문 내부의 조건 은 부울 값으로 강제 변환 될 수있는 모든 것이 될 수 있습니다. 자세한 내용은 부울 논리 항목을 참조하십시오.

  • if-else-if 사다리가 첫 번째 성공시 종료됩니다. 즉 위의 예제에서 i 의 값이 0.5이면 첫 번째 분기가 실행됩니다. 조건이 겹치면 실행 흐름에서 발생하는 첫 번째 기준이 실행됩니다. 사실 일 수있는 다른 조건은 무시됩니다.

  • 하나의 명령문 만있는 경우 해당 명령문 주위의 중괄호는 기술적으로 선택 사항입니다 (예 : 괜찮습니다).

    if (i < 1) console.log("i is smaller than 1");
    

    그리고 이것도 잘 작동합니다 :

    if (i < 1) 
        console.log("i is smaller than 1");
    

    if 블록에서 여러 개의 명령문을 실행하려면 명령문을 둘러싼 중괄호가 필수입니다. 들여 쓰기만으로는 충분하지 않습니다. 예를 들어 다음 코드가 있습니다.

    if (i < 1) 
        console.log("i is smaller than 1");
        console.log("this will run REGARDLESS of the condition"); // Warning, see text!
    

    다음과 같습니다.

    if (i < 1) {
        console.log("i is smaller than 1");
    }
    console.log("this will run REGARDLESS of the condition");
    

스위치 문

switch 문은 표현식의 값을 하나 이상의 값과 비교하고 비교를 기반으로 다른 코드 섹션을 실행합니다.

var value = 1;
switch (value) {
  case 1:
    console.log('I will always run');
    break;
  case 2:
    console.log('I will never run');
    break;
}

break 문은 switch 문에서 "중단"되어 switch 문 내에서 더 이상의 코드가 실행되지 않도록합니다. 이것은 섹션이 정의되는 방식이며 사용자가 "폴 스루"사례를 만들도록 허용합니다.

경고 : 각 사례에 대한 break 또는 return 진술의 부족은 사례 기준이 충족되지 않은 경우에도 프로그램이 다음 사례를 계속 평가한다는 것을 의미합니다!

switch (value) {
  case 1:
    console.log('I will only run if value === 1');
    // Here, the code "falls through" and will run the code under case 2
  case 2:
    console.log('I will run if value === 1 or value === 2');
    break;
  case 3:
    console.log('I will only run if value === 3');
    break;
}

마지막 경우가 default 경우입니다. 다른 일치 항목이없는 경우이 항목이 실행됩니다.

var animal = 'Lion';
switch (animal) {
  case 'Dog':
    console.log('I will not run since animal !== "Dog"');
    break;
  case 'Cat':
    console.log('I will not run since animal !== "Cat"');
    break;
  default:
    console.log('I will run since animal does not match any other case');
}

사례 표현은 모든 종류의 표현이 될 수 있습니다. 즉, 비교, 함수 호출 등을 대문자로 사용할 수 있습니다.

function john() {
  return 'John';
}

function jacob() {
  return 'Jacob';
}

switch (name) {
  case john(): // Compare name with the return value of john() (name == "John")
    console.log('I will run if name === "John"');
    break;
  case 'Ja' + 'ne': // Concatenate the strings together then compare (name == "Jane")
    console.log('I will run if name === "Jane"');
    break;
  case john() + ' ' + jacob() + ' Jingleheimer Schmidt':
    console.log('His name is equal to name too!');
    break;
}

사례에 대한 여러 가지 포괄적 인 기준

사례가 break 또는 return 문없이 '넘어져'있기 때문에 이것을 사용하여 여러 포함 기준을 만들 수 있습니다.

var x = "c"
switch (x) {
   case "a":
   case "b":
   case "c":
      console.log("Either a, b, or c was selected.");
      break;
   case "d":
      console.log("Only d was selected.");
      break;
   default:
      console.log("No case was matched.");
      break;  // precautionary break if case order changes
}

삼항 연산자

if / else 연산을 단축하는 데 사용할 수 있습니다. 이는 값을 빠르게 반환하기 위해 (즉, 다른 변수에 할당하기 위해) 유용합니다.

예 :

var animal = 'kitty';
var result = (animal === 'kitty') ? 'cute' : 'still nice';

이 경우 result 는 '귀여운'값을 얻습니다. 동물의 값이 '키티'이기 때문입니다. 동물에게 또 다른 가치가 있다면, 결과는 '여전히 좋은'가치를 얻을 것입니다.

if/else 조건으로 코드가 원하는 것과 이것을 비교하십시오.

var animal = 'kitty';
var result = '';
if (animal === 'kitty') {
    result = 'cute';
} else {
    result = 'still nice';
}

if 또는 else 조건에는 여러 작업이있을 수 있습니다. 이 경우 연산자는 마지막 표현식의 결과를 반환합니다.

var a = 0;
var str = 'not a';
var b = '';
b = a === 0 ? (a = 1, str += ' test') : (a = 2);

a 가 0이기 때문에 1 이되고 str 은 '테스트가 아닙니다'가됩니다. str 에 관련된 연산이 마지막 이었기 때문에 b 는 연산의 결과를받습니다. str 포함 된 값은 'not a test'입니다.

삼항 연산자는 항상 else 조건을 기대합니다. 그렇지 않으면 구문 오류가 발생합니다. 이 문제를 해결하기 위해 else 분기에서 비슷한 값을 반환 할 수 있습니다. 반환 값을 사용하지 않고 작업을 줄이거 나 단축하려는 경우 중요하지 않습니다.

var a = 1;
a === 1 ? alert('Hey, it is 1!') : 0;

보시다시피, if (a === 1) alert('Hey, it is 1!'); 같은 일을 할 것입니다. 그것은 의무적 인 else 조건을 필요로하지 않기 때문에 단지 char 일 것입니다. else 조건이 포함 된 경우 3 진법이 훨씬 더 명확합니다.

a === 1 ? alert('Hey, it is 1!') : alert('Weird, what could it be?');
if (a === 1) alert('Hey, it is 1!') else alert('Weird, what could it be?');

터너 리는 중첩되어 추가 로직을 캡슐화 할 수 있습니다. 예를 들어

foo ? bar ? 1 : 2 : 3

// To be clear, this is evaluated left to right 
// and can be more explicitly expressed as:

foo ? (bar ? 1 : 2) : 3

이것은 if/else 와 같습니다.

if (foo) {
  if (bar) {
    1
  } else {
    2
  }
} else {
  3
}

문법적으로 이는 짧은 변수 이름과 함께 사용해야하며, 다중 행 삼자체는 가독성을 크게 떨어 뜨릴 수 있습니다.

3 진에서 사용할 수없는 유일한 명령문은 제어 명령문입니다. 예를 들어, 삼항을 사용하여 return 또는 break를 사용할 수 없습니다. 다음 표현식은 유효하지 않습니다.

var animal = 'kitty';
for (var i = 0; i < 5; ++i) {
    (animal === 'kitty') ? break:console.log(i);
}

return 문에 대해서는 다음 내용도 유효하지 않습니다.

var animal = 'kitty';
(animal === 'kitty') ? return 'meow' : return 'woof';

위의 내용을 올바르게 수행하려면 다음과 같이 삼항 항을 반환하십시오.

var animal = 'kitty';
return (animal === 'kitty') ? 'meow' : 'woof';

계략

switch 문을 대체하기 위해 많은 경우에 Javascript에서 전략 패턴을 사용할 수 있습니다. 조건 수가 동적이거나 매우 큰 경우에 특히 유용합니다. 각 조건에 대한 코드를 독립적으로 테스트 할 수 있습니다.

전략 객체는 각기 다른 조건을 나타내는 여러 함수가있는 객체입니다. 예:

const AnimalSays = {
    dog () {
        return 'woof';
    },

    cat () {
        return 'meow';
    },

    lion () {
        return 'roar';
    },

    // ... other animals

    default () {
        return 'moo';
    }
};

위의 객체는 다음과 같이 사용할 수 있습니다.

function makeAnimalSpeak (animal) {
    // Match the animal by type
    const speak = AnimalSays[animal] || AnimalSays.default;
    console.log(animal + ' says ' + speak());
}

결과 :

makeAnimalSpeak('dog') // => 'dog says woof'
makeAnimalSpeak('cat') // => 'cat says meow'
makeAnimalSpeak('lion') // => 'lion says roar'
makeAnimalSpeak('snake') // => 'snake says moo'

마지막 경우, 우리의 기본 함수는 빠진 동물을 처리합니다.

사용 || 및 & 단락

부울 연산자 || 첫 번째가 true 또는 false 인 경우 && 는 "단락"하고 두 번째 매개 변수는 평가하지 않습니다. 이것은 다음과 같은 짧은 조건문을 작성하는 데 사용될 수 있습니다.

var x = 10

x == 10 && alert("x is 10")
x == 10 || alert("x is not 10")


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow