[JS]08_조건문( if문)

2u·2023년 3월 22일

JavaScript

목록 보기
42/43
post-thumbnail

1. if문

: if(...)문은 괄호 안에 들어가는 조건을 평가하는데, 그 결과가 true이면 코드 블록이 실행된다.

2. 불린형으로 변환

  • 숫자 0, 빈 문자열"", null, undefined, NaN은 불린형으로 변환하면 false가 된다.
  • 이 외의 값은 불린형 변환시 true 값이라고 부른다.
if(0) P { //0은 flasy(거짓 같은)값 
  ...
}

// 확정된 불린 값을 if문에 전달
let cond = (year == 2023); //동등 비교를 통해 true/false 여부를 결정한다.
if(cond){
  ....
}

3. else 절

let year = prompt('오늘은 몇 년도 인가요?', '');

if(year == 2023){
  alert('정답');
}else{
  alert('오답'); // 2023의 값을 입력한 경우
}

4. 조건부 연산자 '?'

조건에 따라 다른 값을 변수에 할당해줘야 할 때가 있다.

let accessAllowed;
let age = prmpt('나이를 입력해주세요.','');

if(age > 18){
  accessAllowed = true;
}else{
  accessAllowed = flase;
}
alert(accessAllowed);

: 물음표 연산자 == 조건부 연산자를 사용하면 위 예시를 짧고 간결하게 만들수 있다.
: 조건부 연산자는 물음표 ? 로 표시한다. 피연산자가 3개 이기 때문에 조건부 연산자를 '삼항(ternary)' 연산자라고 부르기도 한다.

let result = condition ? value1 : value2;
// ==
let accessAllowed = age>18 ? ture : false;
// age>19 주위의 괄호는 생각이 가능하다. 
// 물음표 연산자는 우선순위가 낮으므로 비교 연산자 > 가 실행되고 난 뒤에 실행된다.

// 비교 연산 'age>18'이 먼서 실행

//위 연산자 자체가 true, false를 반환하기 때문에
//굳이 물음표 연산자를 사용하지 않아도 된다.

let accessAllowed = age > 18;
// 위의 식과 같다.

(1) 다중 '?'

: 물음표 연산자 ?를 여러 개 연결하면 복수의 조건을 처리할 수 있다.

let age = promot('나이를 입력하세요', 18);

let message = (age > 3) ? '아가야 안녕?' :
(age < 18) ? '안녕?' :
(age < 100) ? '환영합니다.' :
'잘못 입력하셨습니다?';

alert(message);

위와 아래는 같다.

let age = prompt('나이를 입력하세요', 18);

if(age < 3){
  message = '아가야 안녕?';
}else if(age < 18) {
  message = '안녕?';
}else if(age < 100) {
  message = '환영합니다';
}else{
  message = '잘못 입력하셨습니다?';
}

if와 문자열 0

해당 코드는 실행이 될까욤?

if("0"){
  alert('Hello');
}

-> 실행이 됩니다!

  • 이유!
    : 비어있는 문자열을 제외한 모든 문자열은 논리 평가 시 true를 반환한다.
    -> 즉! "0"은 비어있지 않은 문자열이다! == true
if(true){
  alert('hello');
}
//그러나 그냥 0이면 false이기 때문에 코드가 실행되지 않는다!
//if..else구조를 이용해 '자바스크립트의 '공식' 이름은 무었일까요?' 라는 질문을 하는 코드를 작성해보자.
// 사용자가 ECMASScript를 입력하면 정답, 아니라면 '모르셨너요? ECMScript입니다.'메시지 출력

let javaName = prompt("자바스크립트의 '공식' 이름은 무었일까요", "");

if(javaName == 'ECMScript'){
	alert('정답입니다.');
}else{
  alert('모르셨나요? ECMScript 입니다.');
}
//if...else오 프롬포트 대화상차를 이용해 사용자로부터 숫자 하나를 입력받고, 아래 조건에 따라 그 결과를 alert창에 출력해보자.
//- 입력받은 숫자가 0보다 큰 경우 1출력
//- 입력받은 숫자가 0보다 작은 경우 -1cnffur
//- 입력받은 숫자가 0인 경우 0을 출력

let num = prompt("숫자를 입력하세요.");

if(num > 0) {
  alert(1);
}else if(num < 0){
  alert(-1);
}else{
  alert(0);
}
//조건부 연산자 '?'를 이용해 if문이 사용된 아래 코드를 변형해봐라! 동작 결과는 동일해야 한다.

let result;

if(a+b < 4){
	result = '미만';
}else{
	result = '이상';
}

//==
let result = (a+b<4) ? '미만':'이상';

//----------
let message;

if(login =='직원'){
   message = '안녕하세요.;
}else if(login == '임원'){
  message = '환영합니다.';
}else if(login == ''){
  message = '로그인이 필요합니다.';
}else{
  message = '';
}

//==

let message = (login =='직원') ? 안녕하세요 :
(login == '임원') ? 환영합니다. :
(login == '') ? 로그인이 필요합니다. ;
  

0개의 댓글