Skip to content

Latest commit

ย 

History

History
106 lines (83 loc) ยท 2.85 KB

ch28-ํ•ด์„ค.md

File metadata and controls

106 lines (83 loc) ยท 2.85 KB

Chapter28

๐Ÿ“Œ๋ฌธ์ œ1

๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.

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๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ2

๋‹ค์Œ ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ ์œผ์„ธ์š”.

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์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ3

๋‹ค์Œ์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์„ธ์š”

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

๐Ÿ“Œ๋ฌธ์ œ4

๋‹ค์Œ ์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฌผ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

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ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ๋œ๋‹ค.