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)
if (false)
if (null) // 자바스크립트에서 'null'은 객체 타입이지만 falsy로 판별된다.
if (undefined)
if (0)
if (-0)
if (0n)
if (NaN)
if ("")
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 ([초기문]; [조건문]; [증감문])
*초기문에 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 (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 (variable of iterable)
* variable은 let, const 키워드로 선언되거나 이미 선언된 식별자를 사용할 수 있다.
* variable는 value를 순회한다.
*/
const array1 = ['a', 'b', 'c'];
for (const element of array1) {
console.log(element);
}
// "a"
// "b"
// "c"
let i = 0;
while (i < 5) {
if (i === 3) {
continue; //continue는 이후의 코드블록을 실행하지 않고 다음 회차를 실행한다.
}
console.log(i);
i++;
}
// 0
// 1
// 2
// 4
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에 실행할 코드 블럭이 삽입된다.
//만일 예외가 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
}