Search

자바스크립트 알쓸신잡#1 | do.. while, label문, isNaN

subtitle
잘 안쓰이지만 알아두면 언젠가는 써먹겠지 싶은 것들
Tags
기초
Created
2021/03/18 13:57

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
복사

references