수색…
NaN을 반환하는 연산
숫자가 아닌 값에 대한 수학 연산은 NaN을 반환합니다.
"a" + 1
"b" * 3
"cde" - "e"
[1, 2, 3] * 2
예외 : 단일 숫자 배열.
[2] * [3] // Returns 6
또한 +
연산자는 문자열을 연결합니다.
"a" + "b" // Returns "ab"
0을 0으로 나누면 NaN
됩니다.
0 / 0 // NaN
참고 : 일반적으로 (JavaScript 프로그래밍과 달리) 수학에서는 0으로 나눌 수 없습니다.
NaN을 반환하는 수학 라이브러리 함수
일반적으로 숫자가 아닌 인수가 지정된 Math
함수는 NaN을 반환합니다.
Math.floor("a")
Math.sqrt
는 허수 또는 복소수를 지원하지 않기 때문에 음수의 제곱근은 NaN을 반환합니다.
Math.sqrt(-1)
isNaN ()을 사용하여 NaN 테스트
window.isNaN()
전역 함수 isNaN()
은 특정 값이나 표현식이 NaN
평가되는지 확인하는 데 사용할 수 있습니다. 이 함수는 간단히 값이 숫자인지 아닌지 (*) 변환하려고 시도한 다음 결과 값이 NaN
인지 검사합니다. 이러한 이유로이 테스트 방법은 혼동을 일으킬 수 있습니다 .
(*) "변환"방법은 간단하지 않습니다. 알고리즘에 대한 자세한 설명은 ECMA-262 18.2.3 을 참조하십시오.
이 예제는 isNaN()
비헤비어를 더 잘 이해하는 데 도움이됩니다.
isNaN(NaN); // true
isNaN(1); // false: 1 is a number
isNaN(-2e-4); // false: -2e-4 is a number (-0.0002) in scientific notation
isNaN(Infinity); // false: Infinity is a number
isNaN(true); // false: converted to 1, which is a number
isNaN(false); // false: converted to 0, which is a number
isNaN(null); // false: converted to 0, which is a number
isNaN(""); // false: converted to 0, which is a number
isNaN(" "); // false: converted to 0, which is a number
isNaN("45.3"); // false: string representing a number, converted to 45.3
isNaN("1.2e3"); // false: string representing a number, converted to 1.2e3
isNaN("Infinity"); // false: string representing a number, converted to Infinity
isNaN(new Date); // false: Date object, converted to milliseconds since epoch
isNaN("10$"); // true : conversion fails, the dollar sign is not a digit
isNaN("hello"); // true : conversion fails, no digits at all
isNaN(undefined); // true : converted to NaN
isNaN(); // true : converted to NaN (implicitly undefined)
isNaN(function(){}); // true : conversion fails
isNaN({}); // true : conversion fails
isNaN([1, 2]); // true : converted to "1, 2", which can't be converted to a number
마지막 하나는 약간 까다 롭습니다 : Array
이 NaN
인지 확인. 이를 위해 Number()
생성자는 먼저 배열을 문자열로 변환 한 다음 숫자로 변환합니다. 이 이유입니다 isNaN([])
및 isNaN([34])
을 모두 반환 false
,하지만 isNaN([1, 2])
및 isNaN([true])
을 모두 반환 true
: 그들은 변환됩니다 때문에 ""
, "34"
, "1,2"
및 "true"
됩니다. 일반적으로 문자열 표현이 유효한 숫자로 변환 될 수있는 요소가 하나만있는 경우가 아니라면 배열은 isNaN()
의해 NaN
으로 간주됩니다 .
Number.isNaN()
ECMAScript 6에서 Number.isNaN()
함수는 주로 매개 변수를 숫자로 변환하는 window.isNaN()
문제를 피하기 위해 구현되었습니다. Number.isNaN()
은 실제로 테스트하기 전에 값을 숫자 로 변환하려고 시도하지 않습니다 . 이것은 또한 형식 번호의 값, 즉 NaN
도 true
반환 한다는 것을 의미 true
(기본적으로 Number.isNaN(NaN)
만 의미 함).
하나의 인수
number
Number.isNaN
이 호출되면 다음 단계가 수행됩니다.
- Type (number)이 Number가 아니면
false
반환합니다.- number가
NaN
경우는true
돌려줍니다.- 그렇지 않은 경우는
false
리턴합니다.
몇 가지 예 :
// The one and only
Number.isNaN(NaN); // true
// Numbers
Number.isNaN(1); // false
Number.isNaN(-2e-4); // false
Number.isNaN(Infinity); // false
// Values not of type number
Number.isNaN(true); // false
Number.isNaN(false); // false
Number.isNaN(null); // false
Number.isNaN(""); // false
Number.isNaN(" "); // false
Number.isNaN("45.3"); // false
Number.isNaN("1.2e3"); // false
Number.isNaN("Infinity"); // false
Number.isNaN(new Date); // false
Number.isNaN("10$"); // false
Number.isNaN("hello"); // false
Number.isNaN(undefined); // false
Number.isNaN(); // false
Number.isNaN(function(){}); // false
Number.isNaN({}); // false
Number.isNaN([]); // false
Number.isNaN([1]); // false
Number.isNaN([1, 2]); // false
Number.isNaN([true]); // false
없는
null
는 객체 값의 의도적 인 부재를 나타내는 데 사용되며 기본 값입니다. undefined
와 달리 전역 객체의 속성은 아닙니다.
그것은 undefined
않았지만 동일하지는 않습니다.
null == undefined; // true
null === undefined; // false
주의 : typeof
null
은 'object'
입니다.
typeof null; // 'object';
값이 null
인지 제대로 확인하려면 엄격한 항등 연산자 와 비교하십시오.
var a = null;
a === null; // true
정의되지 않았고 null
언뜻 보면 null
과 undefined
가 기본적으로 동일하지만, 미묘하지만 중요한 차이점이있을 수 있습니다.
undefined
는 컴파일러에 값이 없기 때문에 할당되지 않은 변수의 경우처럼 값이 있어야하는 곳이 없으므로 컴파일러에 값이 없기 때문입니다.
-
undefined
는 할당 된 값이 없음을 나타내는 전역 값입니다.-
typeof undefined === 'undefined'
-
-
null
은 변수가 명시 적으로 "값 없음"으로 할당되었음을 나타내는 객체입니다.-
typeof null === 'object'
-
변수를 undefined
설정하면 변수가 효과적으로 존재하지 않습니다. JSON 직렬화와 같은 일부 프로세스는 undefined
속성을 객체에서 제거 할 수 있습니다. 대조적으로, null
특성 표시는 보존되어 "비어있는"특성의 개념을 명시 적으로 전달할 수 있습니다.
다음은 undefined
평가됩니다.
- 변수가 선언되었지만 값이 지정되지 않은 경우 (즉, 정의 된 경우)
let foo; console.log('is undefined?', foo === undefined); // is undefined? true
- 존재하지 않는 속성의 값에 액세스하기
let foo = { a: 'a' }; console.log('is undefined?', foo.b === undefined); // is undefined? true
- 값을 반환하지 않는 함수의 반환 값
function foo() { return; } console.log('is undefined?', foo() === undefined); // is undefined? true
- 선언되었지만 함수 호출에서 생략 된 함수 인수의 값
function foo(param) { console.log('is undefined?', param === undefined); } foo('a'); foo(); // is undefined? false // is undefined? true
undefined
는 전역 window
객체의 속성이기도합니다.
// Only in browsers
console.log(window.undefined); // undefined
window.hasOwnProperty('undefined'); // true
ECMAScript 5 이전에 window.undefined
속성의 값을 잠재적으로 다른 모든 값으로 변경할 수있었습니다.
무한과 - 무한
1 / 0; // Infinity
// Wait! WHAAAT?
Infinity
는 수학적 무한대를 나타내는 전역 객체 (따라서 전역 변수)의 속성입니다. Number.POSITIVE_INFINITY
대한 참조입니다.
그것은 다른 어떤 값보다도 크며, 0으로 나눔으로써 또는 오버 플로우되는 너무 큰 숫자의 표현을 평가함으로써 얻을 수 있습니다. 이것은 실제로 자바 스크립트에서 0 에러에 의한 나눗셈이 없다는 것을 의미합니다. 무한대가 있습니다!
이 또한 -Infinity
수학 부의 무한대이며, 다른 값보다 낮은입니다.
-Infinity
를 얻으려면 Infinity
를 무효화하거나 Number.NEGATIVE_INFINITY
에서 해당 Number.NEGATIVE_INFINITY
참조 Number.NEGATIVE_INFINITY
.
- (Infinity); // -Infinity
이제 예제를 재미있게 보자.
Infinity > 123192310293; // true
-Infinity < -123192310293; // true
1 / 0; // Infinity
Math.pow(123123123, 9123192391023); // Infinity
Number.MAX_VALUE * 2; // Infinity
23 / Infinity; // 0
-Infinity; // -Infinity
-Infinity === Number.NEGATIVE_INFINITY; // true
-0; // -0 , yes there is a negative 0 in the language
0 === -0; // true
1 / -0; // -Infinity
1 / 0 === 1 / -0; // false
Infinity + Infinity; // Infinity
var a = 0, b = -0;
a === b; // true
1 / a === 1 / b; // false
// Try your own!
NaN
NaN
은 "Not a Number"의 약자입니다. JavaScript의 수학적 함수 나 연산이 특정 숫자를 반환 할 수 없으면 대신 NaN
값을 NaN
합니다.
전역 객체의 속성이며 Number.NaN
대한 참조입니다.
window.hasOwnProperty('NaN'); // true
NaN; // NaN
아마도 혼란스럽게도 NaN
은 여전히 숫자로 간주됩니다.
typeof NaN; // 'number'
항등 연산자를 사용하여 NaN
을 확인하지 마십시오. 대신 isNaN
을 참조하십시오.
NaN == NaN // false
NaN === NaN // false
수 상수
Number
생성자에는 유용 할 수있는 내장 된 상수가 있습니다.
Number.MAX_VALUE; // 1.7976931348623157e+308 Number.MAX_SAFE_INTEGER; // 9007199254740991 Number.MIN_VALUE; // 5e-324 Number.MIN_SAFE_INTEGER; // -9007199254740991 Number.EPSILON; // 0.0000000000000002220446049250313 Number.POSITIVE_INFINITY; // Infinity Number.NEGATIVE_INFINITY; // -Infinity Number.NaN; // NaN
대부분의 경우 Javascript의 여러 연산자는 ( Number.MIN_SAFE_INTEGER
, Number.MAX_SAFE_INTEGER
) 범위를 벗어나는 값으로 중단됩니다.
Number.EPSILON
은 하나와 가장 작은 Number
가 1보다 크고 다른 두 Number
값 사이에 가능한 가장 작은 차이를 나타내는 점에 유의하십시오. 이것을 사용하는 한가지 이유는 JavaScript가 숫자를 저장하는 방식의 성격 때문 입니다. 두 숫자의 동일성 확인