수색…
소개
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 if
및 else
문 및 삼항 연산자를 사용 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")