๋ค์ ์ฝ๋๋ฅผ ์คํํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์์ค.
const num1 = Number ( 10 ) ;
const num2 = new Number ( 10 ) ;
console . log ( num1 == num2 ) ; // (1)
console . log ( num1 === num2 ) ; // (2)
console . log ( typeof num1 ) ; // (3)
console . log ( typeof num2 ) ; // (4)
> ES5์์๋ [[NumberData]], ES6์์๋ [[PrimitiveValue]]๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ๋์ผํ ๋์์ ๊ฐ๋ฆฌํจ๋ค.
(1) : true
๊ฐ์ ๋น๊ตํ ๋๋ ์์ ํ์
์ธ num1์ ๊ฐ๊ณผ num2์ [[NumberData]]์ ๋น๊ต๊ฐ ๋๋ค.
(2) : false
new๋ก ์์ฑํ num2๋ Number wrapper ๊ฐ์ฒด์ด๋ฏ๋ก ์์ํ์
์ธ num1๊ณผ ํ์
์ด ๋ค๋ฅด๋ค.
(3) : number
์์ํ์
์ด์ง๋ง Number wrapper์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. ํธ์ถํ๊ฒ๋๋ฉด ์ผ์์ ์ผ๋ก Number wrapper ๊ฐ์ฒด๋ก ๋ณํ๋์ด ๋ฉ์๋๋ฅผ ์คํํ๋ค.
(4) : object
new๋ก ์์ฑํ๋ฉด [[NumberData]] ์ฌ๋ก์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ซ์๋ฅผ ํ ๋นํ Number wrapper ๊ฐ์ฒด๊ฐ ๋๋ค. ๋ฐ๋ผ์ Number๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์๋ค.
๋ค์ ์ฝ๋์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ผ์ธ์.
isNaN ( undefined ) ; // (1)
Number . isSafeInteger ( "10" ) ; // (2)
( 1.2345 ) . toFixed ( ) ; // (3)
(1) : true
(2) : false
(3) : 1
(1) : `Number.isNaN` ๋ฉ์๋๋ ์ ๋ฌ๋ฐ์ ์ธ์๋ฅผ ์๋ฌต์ ์ผ๋ก ํ์
๋ณํํ์ง ์์ง๋ง
๋นํธ์ธ ์ ์ญ ํจ์ `isNaN`์ ์ ๋ฌ ๋ฐ์ ์ธ์๋ฅผ ์ซ์๋ก ์๋ฌต์ ์ผ๋ก ํ์
๋ณํํ์ฌ ๊ฒ์ฌํฉ๋๋ค.
(2) : `Number.isSafeIntegar` ๋ฉ์๋๋ ๊ฒ์ฌ ์ ์๋ฌต์ ํ์
๋ณํํ์ง ์์ต๋๋ค.
(3) : ์์์ ์ดํ๋ฅผ ๋ฐ์ฌ๋ฆผํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์
๋๋ค.
๋ค์์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ฐ์ธ์
console . log ( Number . isFinite ( null ) ) ; // (1)
console . log ( isFinite ( null ) ) ; // (2)
console . log ( Number . NaN === NaN ) ; // (3)
console . log ( Number ( "300์" ) ) ; // (4)
console . log ( parseInt ( "300์" ) ) ; // (5)
console . log ( 1.2 . toFixed ( ) ) ; // (6)
(1) false
Number์ isFinite๋ ์๋ํ๋ณํ์ด ๋์ง ์๋๋ค.
(2) true
๋นํธ์ธ ์ ์ญํจ์ isFinite์ null์ด ์๋ํ๋ณํ์ผ๋ก 0์ด ๋๋ค.
(3) false
NaN์ ๋น๊ต๊ฐ ๋์ง ์๋๋ค.
(4) NaN
(5) 300
parseInt ํจ์๋ ์ซ์๋ก ์์ํ๋ ๋ฌธ์์ด์ผ ๋ ์์ ์ซ์๊น์ง๋ง ์๋ผ์ ๋ฐํํ๋ค.
(6) 1
๋ค์ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฌผ์ ์์ฑํ์ธ์.
const num = 123.456 ;
const num1 = num . toFixed ( 2 ) ;
console . log ( num1 ) ; // 1 : 123.46
const num2 = num1 . toFixed ( 1 ) ;
console . log ( num2 ) ; // 2 : TypeError : num1.toFixed is not a function
Number.prototype.toFixed ๋ฉ์๋๋ ๋ฐํ๊ฐ์ผ๋ก Stringํ์
์ ๋ฐํํ๊ฒ๋๋ค.