ν‹°μŠ€ν† λ¦¬ λ·°

ν‘œμ€€ 빌트인 객체인 MathλŠ” μˆ˜ν•™μ μΈ μƒμˆ˜μ™€ ν•¨μˆ˜λ₯Ό μœ„ν•œ ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. MathλŠ” μƒμ„±μž ν•¨μˆ˜κ°€ μ•„λ‹ˆλΌ 정적 ν”„λ‘œνΌν‹°μ™€ 정적 λ©”μ„œλ“œλ§Œ μ œκ³΅ν•©λ‹ˆλ‹€.


Math ν”„λ‘œνΌν‹°

Math.PI

μ›μ£Όμœ¨ PI κ°’(π = 3.14159265358979…)을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

Math.PI; // -> 3.141592653589793

Math λ©”μ„œλ“œ

Math.abs

인수둜 μ „λ‹¬λœ 숫자의 μ ˆλŒ€κ°’μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€. μ ˆλŒ€κ°’μ€ λ°˜λ“œμ‹œ 0 λ˜λŠ” μ–‘μˆ˜μ΄μ–΄μ•Όν•©λ‹ˆλ‹€.

 

Math.abs(-1);        // -> 1
Math.abs('-1');      // -> 1
Math.abs('');        // -> 0
Math.abs([]);        // -> 0
Math.abs(null);      // -> 0
Math.abs(undefined); // -> NaN
Math.abs({});        // -> NaN
Math.abs('string');  // -> NaN
Math.abs();          // -> NaN

 

Math.round

인수둜 μ „λ‹¬λœ 숫자의 μ†Œμˆ˜μ  μ΄ν•˜λ₯Ό λ°˜μ˜¬λ¦Όν•œ μ •μˆ˜λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

Math.round(1.4);  // -> 1
Math.round(1.6);  // -> 2
Math.round(-1.4); // -> -1
Math.round(-1.6); // -> -2
Math.round(1);    // -> 1
Math.round();     // -> NaN

 

Math.ceil

인수둜 μ „λ‹¬λœ 숫자의 μ†Œμˆ˜μ  μ΄ν•˜λ₯Ό μ˜¬λ¦Όν•œ μ •μˆ˜λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. μ†Œμˆ˜μ  μ΄ν•˜λ₯Ό μ˜¬λ¦Όν•˜κΈ° λ•Œλ¬Έμ— 더 큰 μ •μˆ˜κ°€ λ©λ‹ˆλ‹€.

 

Math.ceil(1.4);  // -> 2
Math.ceil(1.6);  // -> 2
Math.ceil(-1.4); // -> -1
Math.ceil(-1.6); // -> -1
Math.ceil(1);    // -> 1
Math.ceil();     // -> NaN

 

Math.floor

인수둜 μ „λ‹¬λœ 숫자의 μ†Œμˆ˜μ  μ΄ν•˜λ₯Ό λ‚΄λ¦Όν•œ μ •μˆ˜λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 더 μž‘μ€ μ •μˆ˜κ°€ λ©λ‹ˆλ‹€.

 

Math.floor(1.9);  // -> 1
Math.floor(9.1);  // -> 9
Math.floor(-1.9); // -> -2
Math.floor(-9.1); // -> -10
Math.floor(1);    // -> 1
Math.floor();     // -> NaN

 

Math.sprt

인수둜 μ „λ‹¬λœ 숫자의 μ œκ³±κ·Όμ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

Math.sqrt(9);  // -> 3
Math.sqrt(-9); // -> NaN
Math.sqrt(2);  // -> 1.414213562373095
Math.sqrt(1);  // -> 1
Math.sqrt(0);  // -> 0
Math.sqrt();   // -> NaN

 

Math.random

μž„μ˜μ˜ λ‚œμˆ˜(랜덀 숫자)λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. Math.random λ©”μ„œλ“œκ°€ λ°˜ν™˜ν•œ λ‚œμˆ˜λŠ” 0μ—μ„œ 1미만의 μ‹€μˆ˜μ΄κΈ° λ•Œλ¬Έμ— 0은 ν¬ν•¨λ˜μ§€λ§Œ 1은 ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

Math.random(); // 0μ—μ„œ 1 미만의 랜덀 μ‹€μˆ˜(0.8208720231391746)

/*
1μ—μ„œ 10 λ²”μœ„μ˜ 랜덀 μ •μˆ˜ 취득
1) Math.random으둜 0μ—μ„œ 1 미만의 랜덀 μ‹€μˆ˜λ₯Ό κ΅¬ν•œ λ‹€μŒ, 10을 κ³±ν•΄ 0μ—μ„œ 10 미만의
랜덀 μ‹€μˆ˜λ₯Ό κ΅¬ν•œλ‹€.
2) 0μ—μ„œ 10 미만의 랜덀 μ‹€μˆ˜μ— 1을 더해 1μ—μ„œ 10 λ²”μœ„μ˜ 랜덀 μ‹€μˆ˜λ₯Ό κ΅¬ν•œλ‹€.
3) Math.floor둜 1μ—μ„œ 10 λ²”μœ„μ˜ 랜덀 μ‹€μˆ˜μ˜ μ†Œμˆ˜μ  μ΄ν•˜λ₯Ό λ–Όμ–΄ 버린 λ‹€μŒ μ •μˆ˜λ₯Ό λ°˜ν™˜ν•œλ‹€.
*/
const random = Math.floor((Math.random() * 10) + 1);
console.log(random); // 1μ—μ„œ 10 λ²”μœ„μ˜ μ •μˆ˜

 

Math.pow

첫 번째 인수λ₯Ό λ°‘μœΌλ‘œ, 두 번째 인수λ₯Ό μ§€μˆ˜λ‘œ κ±°λ“­μ œκ³±ν•œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

Math.pow(2, 8);  // -> 256
Math.pow(2, -1); // -> 0.5
Math.pow(2);     // -> NaN

// ES7 μ§€μˆ˜ μ—°μ‚°μž
2 ** 2 ** 2; // -> 16
Math.pow(Math.pow(2, 2), 2); // -> 16

 

*Math.pow λŒ€μ‹  ES7μ—μ„œ λ„μž…λœ μ§€μˆ˜ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 가독성이 μ’‹μŒ

 

Math.max

전달받은 인수 μ€‘μ—μ„œ κ°€μž₯ 큰 수λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. λ§Œμ•½ μΈμˆ˜κ°€ μ „λ‹¬λ˜μ§€ μ•ŠμœΌλ©΄ -Infinityλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 

 

Math.max(1); // -> 1
Math.max(1, 2); // -> 2
Math.max(1, 2, 3); // -> 3
Math.max(); // -> -Infinity

// λ°°μ—΄ μš”μ†Œ μ€‘μ—μ„œ μ΅œλŒ€κ°’ 취득
Math.max.apply(null, [1, 2, 3]); // -> 3

// ES6 μŠ€ν”„λ ˆλ“œ 문법
Math.max(...[1, 2, 3]); // -> 3

 

*배열을 인수둜 전달받아 λ°°μ—΄μ˜ μš”μ†Œ μ€‘μ—μ„œ μ΅œλŒ€κ°’μ„ κ΅¬ν•˜λ €λ©΄ Function.prototype.apply λ©”μ„œλ“œ λ˜λŠ” μŠ€ν”„λ ˆλ“œ 문법을 μ‚¬μš©ν•΄μ•Ό 함

 

Math.min

전달받은 인수 μ€‘μ—μ„œ κ°€μž₯ μž‘μ€ 수λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. λ§Œμ•½ μΈμˆ˜κ°€ μ „λ‹¬λ˜μ§€ μ•ŠμœΌλ©΄ Infinityλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

 

Math.min(1); // -> 1
Math.min(1, 2); // -> 1
Math.min(1, 2, 3); // -> 1
Math.min(); // -> Infinity

// λ°°μ—΄ μš”μ†Œ μ€‘μ—μ„œ μ΅œμ†Œκ°’ 취득
Math.min.apply(null, [1, 2, 3]); // -> 1

// ES6 μŠ€ν”„λ ˆλ“œ 문법
Math.min(...[1, 2, 3]); // -> 1

 

*배열을 인수둜 전달받아 λ°°μ—΄μ˜ μš”μ†Œ μ€‘μ—μ„œ μ΅œμ†Œκ°’μ„ κ΅¬ν•˜λ €λ©΄ Function.prototype.apply λ©”μ„œλ“œ λ˜λŠ” μŠ€ν”„λ ˆλ“œ 문법을 μ‚¬μš©ν•΄μ•Ό 함


[좜처] λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive

https://wikibook.co.kr/mjs/

 

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive: μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κΈ°λ³Έ κ°œλ…κ³Ό λ™μž‘ 원리

269개의 κ·Έλ¦Όκ³Ό 원리λ₯Ό νŒŒν—€μΉ˜λŠ” μ„€λͺ…μœΌλ‘œ ‘μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κΈ°λ³Έ κ°œλ…κ³Ό λ™μž‘ 원리’λ₯Ό μ΄ν•΄ν•˜μž! μ›ΉνŽ˜μ΄μ§€μ˜ λ‹¨μˆœν•œ 보쑰 κΈ°λŠ₯을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ μ œν•œμ μΈ μš©λ„λ‘œ νƒœμ–΄λ‚œ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 과도

wikibook.co.kr