do while
while, for문에 비해 실무에서 쓰지 않았던 편이다. do while문은 일단 한 번은 실행한 뒤 조건을 검사한다.
do {
i += 1;
result += i + ' ';
}
while (i > 0 && i < 5);
JavaScript
복사
i + ' ' 는 자바스크립트가 암묵적 타입 변환을 해서 가능한 연산이다. 숫자와 문자열을 더하면 자바스크립트는 암묵적으로 숫자를 문자열로 변환하여 계산한다.
label문
코드 블록에 레이블을 붙여 break나 continue를 사용해 코드 실행을 제어할 수 있다. break는 모든 label문에서 사용될 수 있지만, continue는 반복 레이블문에서만 사용 가능하다. 사용할 때는 break 레이블명 또는 continue 레이블명 으로 사용한다.
이중 for문에서 첫번째 for문 break 시키기
let i, j;
loop1:for (i = 0; i < 3; i++) {
loop2:for (j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
continue loop1;
}
console.log('i = ' + i + ', j = ' + j);
}
}
JavaScript
복사
•
(1, 1)이 됐을 때, loop1을 continue하면 (2, 0)부터 시작한다.
블록에 사용
label: {
console.log(1)
break label
console.log(2)
}
JavaScript
복사
함수에 사용
label: function func() {}
JavaScript
복사
•
non-strict 모드에서는 레이블이 허용되나, strict 모드에서는 에러가 난다. generator 함수는 non-strict 모드에서도 레이블을 붙일 수 없다.
isNaN
NaN은 Not a Number 의 약자이다. NaN은 자신과 일치하지 않는 유일한 값이다. 그러므로 숫자가 아닌지 판단하려면 === NaN 보다는 isNaN을 사용한다. 아니면 자기자신과 일치하지 않는다는 점을 이용해 판단할 수도 있다.
isNaN(1 + undefined) // true
function customIsNaN(value) {
return value !== value
}
customIsNaN(1 + undefined)
JavaScript
복사
isNaN과 Number.isNaN의 차이
isNaN은 평가된 값이 NaN이면 참을 반환하고, Number.isNaN은 오로지 인수로 NaN이 들어와야 참을 반환한다.
isNaN('something') // true
Number.isNaN('something') // false
JavaScript
복사