250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- button
- 개발자
- IOS
- php
- front-end
- SWIFT
- MAC
- Animation
- 애니메이션
- 프론트엔드
- javascript
- keyframes
- xcode
- CSS
- HTML
- jQuery
- effect
- 비전공자
- 자바스크립트
- 풀스택
- 비전공 개발자
- iPhone
- hover
- 백엔드
- html5
- css3
- iOS 개발자
- ipad
- react
- image
Archives
- Today
- Total
비전공자 개발일기
Javascript NaN 본문
728x90
SMALL
NaN(Not a Number)
- 전역 객체의 속성(전역 스코프의 변수)
- 초기값은 Not-A-Number로, Number.NaN과 같음
- 최신 브라우저에서 NaN은 설정 불가, 쓰기 불가 속성
- NaN을 반환하는 연산
- 숫자로서 읽을 수 없는 경우 (parseInt("어쩌구"), Number(undefined))
- 결과가 허수인 수학 계산식 (Math.sqrt(-1))
- 피연산자가 NaN (7 ** NaN)
- 정의할 수 없는 계산식 (0 * Infinity)
- 문자열을 포함하면서 덧셈이 아닌 계산식 ("가" / 3)
- NaN은 다른 모든 값과 비교(==, !=, ===, !==)했을 때 같지 않으며, 다른 NaN과도 같지 않음(어떠한 연산을 해도 결과 값은 false)
- 판별: Number.isNaN(value) or isNaN(value) -> isNaN은 현재 값이 NaN이거나 숫자로 변환했을 때 NaN이 되면 참을 반환, Number.isNan은 현재 값이 NaN이어야만 참을 반환
-
Number.isNaN(NaN); // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0) // true // 예를 들면 이들은 global isNaN()으로는 true가 됐을 것임 Number.isNaN("NaN"); // false Number.isNaN(undefined); // false Number.isNaN({}); // false Number.isNaN("blabla"); // false // 모두 Number.isNaN(true); Number.isNaN(null); Number.isNaN(37); Number.isNaN("37"); Number.isNaN("37.37"); Number.isNaN(""); Number.isNaN(" ");
-
function increment(x) { if (isNaN(x)) x = 0; return x + 1; }; // Number.isNaN()과 같은 효과: function increment(x) { if (Number.isNaN(Number(x))) x = 0; return x + 1; }; // 함수의 인수 x에 대해 다음 경우에, // isNaN(x)는 항상 거짓, x가 실제 숫자가 아닐지라도 // 하지만 산술 식에 그대로 // 사용될 수 있습니다 increment(""); // 1: ""는 0으로 변환됩니다 increment(new String()); // 1: 빈 문자열을 나타내는 String 객체는 0으로 변환됩니다 increment([]); // 1: []는 0으로 변환됩니다 increment(new Array()); // 1: 빈 배열을 나타내는 Array 객체는 0으로 변환됩니다 increment("0"); // 1: "0"은 0으로 변환됩니다 increment("1"); // 2: "1"은 1로 변환됩니다 increment("0.1"); // 1.1: "0.1"은 0.1로 변환됩니다 increment("Infinity"); // Infinity: "Infinity"는 Infinity로 변환됩니다 increment(null); // 1: null은 0으로 변환됩니다 increment(false); // 1: false는 0으로 변환됩니다 increment(true); // 2: true는 1로 변환됩니다 increment(new Date()); // 밀리초로 현재 date/time + 1을 반환합니다 // 함수의 인수 x에 대해 다음 경우에, // isNaN(x)는 항상 거짓이고 x는 실제로 숫자입니다 increment(-1); // 0 increment(-0.1); // 0.9 increment(0); // 1 increment(1); // 2 increment(2); // 3 // ... 등등 ... increment(Infinity); // Infinity // 함수의 인수 x에 대해 다음 경우에, // isNaN(x)는 항상 참이고 x는 실제로 숫자가 아닙니다, // 따라서 함수는 인수를 0으로 대체하고 1을 반환합니다 increment(String); // 1 increment(Array); // 1 increment("blabla"); // 1 increment("-blabla"); // 1 increment(0/0); // 1 increment("0/0"); // 1 increment(Infinity/Infinity); // 1 increment(NaN); // 1 increment(undefined); // 1 increment(); // 1 // isNaN(x)는 항상 isNaN(Number(x))과 같지만, // x의 존재는 여기서 필수입니다! isNaN(x) == isNaN(Number(x)) // x == undefined 포함 x의 어떤 값도 참, // isNaN(undefined) == true 및 Number(undefined)가 NaN을 반환하기에, // 하지만 ... isNaN() == isNaN(Number()) // 거짓, isNaN() == true 및 Number() == 0 때문에
-
- NaN만이 자기 자신과 비교했을 때 같지 않음을 이용할 때에도 사용
728x90
LIST
'Javascript' 카테고리의 다른 글
Javascript bubble & selection & insertion sort (0) | 2021.09.05 |
---|---|
Javascript For loop - tree (0) | 2021.09.04 |
HTML JAVASCRIPT Select option Multiple (0) | 2021.08.27 |
Javascript Clock (0) | 2021.08.26 |
Javascript Login with LocalStorage (0) | 2021.08.25 |