논리 연산과 명령문

jonyChoiGenius·2023년 1월 4일
0

Truthy and Falsy

Truthy

Truthy한 값은 if block을 실행시킨다.

if (true)
if ({})
if ([]) //빈 객체와 빈 배열도 truthy이다.
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

Falsy

if (false)
if (null) // 자바스크립트에서 'null'은 객체 타입이지만 falsy로 판별된다.
if (undefined)
if (0)
if (-0)
if (0n)
if (NaN)
if ("")

조건문

if, else if, else

const a = 10;
const truthy = new Array();

if (truthy) {
  console.log('빈 배열은 truthy 입니다.');
} else if (a === 10) {
  console.log('10입니다!');
} else {
  console.log('5도 아니고 10도 아닙니다.');
}

삼항 연산자

const array = new Array()
let text = array.length === 0 ? '배열이 비어있습니다' : '배열이 비어있지 않습니다.';

console.log(text) // '배열이 비어 있습니다.'

//nested한 삼항 연산자는 권장하지 않는다.

반복문

for 문

/*
 *for ([초기문]; [조건문]; [증감문])
 *초기문에 let을 이용해서 선언과 할당을 동시에 하거나 이미 선언된 변수를 사용할 수 있다. const와 상수를 사용하지 않는다.
 *증감문에는 예외적으로 식별자++, 식별자--의 증감 연산자를 허용할 수 있다.
 */

for (let step = 0; step < 5; step++) {
  // Runs 5 times, with values of step 0 through 4.
  console.log('Walking east one step');
}

for ... in 문 (객체에서 주로 사용)

/*
 * for (variable in object) 
 * variable은 let, const 키워드로 선언되거나 이미 선언된 식별자를 사용할 수 있다.
 * variable는 객체의 프로퍼티명(즉 '키(keyed)'를 의미)을 순회한다. 객체가 배열인 경우 인덱스를 순회한다.
 */
const object = { a: 1, b: 2, c: 3 };

for (const property in object) {
  console.log(`${property}: ${object[property]}`);
}
// "a: 1"
// "b: 2"
// "c: 3"

for ... of 문 (배열에서 주로 사용)

/*
 * for (variable of iterable)
 * variable은 let, const 키워드로 선언되거나 이미 선언된 식별자를 사용할 수 있다.
 * variable는 value를 순회한다.
 */

const array1 = ['a', 'b', 'c'];

for (const element of array1) {
  console.log(element);
}

// "a"
// "b"
// "c"

while문

let i = 0;
while (i < 5) {
  if (i === 3) {
    continue; //continue는 이후의 코드블록을 실행하지 않고 다음 회차를 실행한다.
  }
  console.log(i);
  i++;
}
// 0
// 1
// 2
// 4

Switch문

const device = 'iphone';

//switch 문은 평가식의 결과값이 특정 case에 해당하면 해당 케이스 이후의 코드 블록들을 실행시킨다.
switch (device) {
  case 'iphone':
    console.log('아이폰!');
    break; //하나의 case의 코드 블록을 실행하기 위해 case마다 break를 붙인다.
  case 'ipad':
    console.log('아이패드!');
    break;
  case 'galaxy note':
    console.log('갤럭시 노트!');
    break; 
  default: //default 문은 관습적으로 가장 마지막에 두고 break문은 생략한다.
    console.log('모르겠네요..');
}

try...catch 문

//try에 실행할 코드 블럭이 삽입된다.
//만일 예외가 throw되면 catch (exceptionVar) 문이 실행된다.
//finally 블록은 예외 여부와 상관없이 실행된다.

try {
  tryStatements
} catch (exceptionVar) {
  catchStatements
} finally {
  finallyStatements
}
try {
  nonExistentFunction();
} catch (error) {
  console.error(error);
  // expected output: ReferenceError: nonExistentFunction is not defined
}
profile
천재가 되어버린 박제를 아시오?

0개의 댓글