๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์–ธ์–ด์˜ ๊ธฐ์ดˆ

JavaScript ์–ธ์–ด๊ฐ€ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ์ˆ˜์ค€์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋ณธ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์—๋Š” ๋ฌธ๋ฒ•๊ณผ ์—ฐ์‚ฐ์ž, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ ๋“ฑ์ด ์žˆ๋‹ค.

๋ฌธ๋ฒ•#

๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„#

์–ด๋””์„œ๋“  ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž. ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์ด๋ฆ„, ์—ฐ์‚ฐ์ž ๋ชจ๋‘ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. test ์™€ Test ๋Š” ๋‹ค๋ฅธ ๋ณ€์ˆ˜์ด๊ณ , typeof ๋Š” ํ‚ค์›Œ๋“œ๋กœ ํ•จ์ˆ˜ ์ด๋ฆ„์— ์“ธ ์ˆ˜ ์—†์ง€๋งŒ, typeOf ๋Š” ์œ ํšจํ•œ ํ•จ์ˆ˜ ์ด๋ฆ„์ด๋‹ค.

์‹๋ณ„์ž#

'์‹๋ณ„์ž'๋ž€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜, ํ”„๋กœํผํ‹ฐ, ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด๋‹ค. ์‹๋ณ„์ž๋Š” ๋‹ค์Œ ํ˜•์‹์—๋”ฐ๋ผ์•ผํ•œ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋Š” ๋ฐ˜๋“œ์‹œ ๊ธ€์ž๋‚˜ ๋ฐ‘์ค„( _ ), ๋‹ฌ๋Ÿฌ ๊ธฐํ˜ธ( $ ) ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค.

  • ๋‹ค๋ฅธ ๋ฌธ์ž์—๋Š” ๊ธ€์ž๋‚˜ ๋ฐ‘์ค„, ๋‹ฌ๋Ÿฌ ๊ธฐํ˜ธ, ์ˆซ์ž๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

๊ธ€์ž์—๋Š” ํ™•์žฅ ASCII๋‚˜ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ์“ธ ์ˆ˜ ์žˆ์œผ๋‚˜ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

ECMAScript ์‹๋ณ„์ž๋Š” ๊ด€์Šต์ ์œผ๋กœ ์นด๋ฉœ ์ผ€์ด์Šค๋กœ ์“ด๋‹ค. firstSecond , myCar , doSomethingImportant ...

var myVar // ovar _myVar // ovar $myVar // ovar 1myVar // ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—๋Š” ์ˆซ์ž๊ฐ€ ์˜ฌ ์ˆ˜ ์—†๋‹ค.

์ฃผ์„#

ECMAScript๋Š” ํ•œ ์ค„ ์ฃผ์„๊ณผ ๋ธ”๋ก ์ฃผ์„ ๋ชจ๋‘ C ์–ธ์–ด ์Šคํƒ€์ผ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

// ํ•œ ์ค„ ์ฃผ์„
/* * ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„์„ ์“ธ ๋•Œ๋Š” * ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•˜์—ฌ * ์ด๋Ÿฌํ•œ ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. */

์ŠคํŠธ๋ฆญํŠธ ๋ชจ๋“œ#

์ŠคํŠธ๋ฆญํŠธ ๋ชจ๋“œ๋Š” ๊ธฐ์กด๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ JavaScript๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ผ๊ณ  ์ง€์‹œํ•˜๋Š”๊ฒƒ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋™์ž‘์— ๋Œ€ํ•ด ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•œ๋‹ค. ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ์— ์ŠคํŠธ๋ฆญํŠธ ๋ชจ๋“œ๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ฌธ์žฅ์„ ์Šคํฌ๋ฆฝํŠธ ๋งจ ์œ„์— ์ถ”๊ฐ€ํ•œ๋‹ค.

"use strict";

ํ•จ์ˆ˜ ๋‹จ ํ•˜๋‚˜๋งŒ ์ŠคํŠธ๋ฆญํŠธ ๋ชจ๋“œ๋กœ ์„ ์–ธํ•˜๋ ค๋ฉด ํ•จ์ˆ˜ ๋ณธ๋ฌธ ๋งจ ์•ž์— ์ถ”๊ฐ€ํ•œ๋‹ค.

function doSomething() {    'use strict';    // ํ•จ์ˆ˜ ๋ณธ๋ฌธ}

๋ฌธ์žฅ#

ECMAScript์—์„œ ๊ฐ ๋ฌธ์žฅ์€ ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ์ข…๋ฃŒํ•œ๋‹ค. ์„ธ๋ฏธ์ฝœ๋ก ์„ ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ์ƒ๋žตํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ ๋ฌธ์žฅ์ด ๋๋‚˜๋Š” ์œ„์น˜๋ฅผ ํŒ๋‹จํ•œ๋‹ค.

var sum = a + b;var diff = a - b;

์ด ์ฑ…์—์„œ๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ์“ฐ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ์„ธ๋ฏธ์ฝœ๋ก ์„ ์“ฐ๋Š” ์Šต๊ด€์„ ๋“ค์ด๋ฉด ํƒ€์ดํ•‘ํ•˜๋‹ค๊ฐ€ ๋ฉˆ์ท„๋˜ ๋ถ€๋ถ„์„ ๊นœ๋นก ์žŠ๋Š” ๋“ฑ์˜ ์—๋Ÿฌ๋ฅผ ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋ถ„์˜ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์••์ถ•ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ๋˜ํ•œ ๋ฌธ์žฅ์„ ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๋๋‚ด์ง€ ์•Š์„ ๊ฒฝ์šฐ ์••์ถ•ํ–ˆ์„ ๋•Œ ๋ฌธ๋ฒ• ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์„ธ๋ฏธ์ฝœ๋ก ์— ๊ด€ํ•œ ์˜๊ฒฌ์ด ๊ฐˆ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ ๊ธ€์„ ์ฐธ์กฐํ•œ๋‹ค.

๐Ÿ”— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ์„ธ๋ฏธ์ฝœ๋ก ์„ ์จ์•ผ ํ•˜๋‚˜ ๋ง์•„์•ผ ํ•˜๋‚˜ | ๋ฐ•์—ฐ์˜ค

๋˜ํ•œ C ์–ธ์–ด ์Šคํƒ€์ผ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๋ฌธ์žฅ์„ ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๊ณ , if ๋ฌธ ๊ฐ™์€ ์ œ์–ด๋ฌธ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฌธ์žฅ์ด ํ•˜๋‚˜๋ฟ์ผ ๋•Œ๋Š” ์ฝ”๋“œ ๋ธ”๋ก์„ ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์žฅ ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ํ•ญ์ƒ ์ฝ”๋“œ ๋ธ”๋ก์„ ์“ฐ๊ธธ ๊ถŒ์žฅํ•œ๋‹ค.

if (test) {    test = false;    alert(test);}
if (test) alert(test); // ๋ฌธ์žฅ์ด ํ•˜๋‚˜๋ฟ์ด๋ผ๋ฉด ์ฝ”๋“œ ๋ธ”๋ก์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ‚ค์›Œ๋“œ์™€ ์˜ˆ์•ฝ์–ด#

ECMAScript์—๋Š” ์ œ์–ด๋ฌธ์˜ ์‹œ์ž‘๊ณผ ๋์„ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ํŠน์ •ํ•œ ์กฐ์ž‘์— ์“ธ ๋ชฉ์ ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ํ‚ค์›Œ๋“œ๋“ค์ด ์žˆ๋‹ค. ( break , case , continue ... ) ๋˜ํ•œ ์•„์ง ํŠน๋ณ„ํ•œ์“ฐ์ž„์ƒˆ๊ฐ€ ์—†์ง€๋งŒ ๋ฏธ๋ž˜์— ํ‚ค์›Œ๋“œ๋กœ ์“ธ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ์˜ˆ์•ฝํ•ด ๋‘” ์˜ˆ์•ฝ์–ด๋“ค๋„ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ‚ค์›Œ๋“œ์™€ ์˜ˆ์•ฝ์–ด๋Š” ์‹๋ณ„์ž๋‚˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์— ์“ธ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์œ ์˜ํ•œ๋‹ค.

๐Ÿ”— JavaScript Reserved Words

๋ณ€์ˆ˜#

ECMAScript๋Š” ๋Š์Šจํ•œ ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋ณ€์ˆ˜ ํ•˜๋‚˜์— ์–ด๋–ค ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ผ๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ๋Š” var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋˜ํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š”๋™์‹œ์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

var name;var message = 'Hello';

message ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด "Hello" ๋ฅผ ์ €์žฅํ–ˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์ดˆ๊ธฐํ™”ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ณ€์ˆ˜์—๋ฌธ์ž์—ด ํƒ€์ž…์„ ์ง€์ •ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํƒ€์ž…์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ฐ”๊พธ๋Š” ํ–‰์œ„๋Š” ๊ถŒ์žฅํ•˜์ง€์•Š๋Š”๋‹ค.

var message = 'Hello';message = 100; // ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ

var ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜๋ฅผ ๋กœ์ปฌ ์Šค์ฝ”ํ”„์—์„œ ์ •์˜ํ•œ๋‹ค. ์ฆ‰ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ var ํ‚ค์›Œ๋“œ๋ฅผ์‚ฌ์šฉํ•ด ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์ฆ‰์‹œ ํŒŒ๊ดด๋œ๋‹ค.

function test() {    var message = 'Hello'; // ๋กœ์ปฌ ์Šค์ฝ”ํ”„}test();console.log(message); // ์—๋Ÿฌ

๊ทธ๋Ÿฐ๋ฐ var ์—ฐ์‚ฐ์ž๋ฅผ ์ƒ๋žตํ•˜๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋„ ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๊ธ‰์  ์ด ํŒจํ„ด์„ ํ”ผํ•˜๊ธธ ๊ถŒ์žฅํ•˜๋Š”๋ฐ, ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋กœ์ปฌ์—์„œ ์ •์˜ํ•˜๋ฉด ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๊ณ , var ํ‚ค์›Œ๋“œ๋ฅผ ์˜๋„์ ์œผ๋กœ ์ƒ๋žตํ•œ ๊ฒƒ์ธ์ง€ ์‹ค์ˆ˜ ์ธ์ง€ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์—†์–ด์„œํ˜ผ๋ž€์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

function test() {    message = 'Hello'; // ์ „์—ญ ๋ณ€์ˆ˜}test();console.log(message); // "Hello"

๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์„ ์–ธํ•  ๋•Œ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•œ ๋ฌธ์žฅ์—์„œ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

var message = 'hi',    found = false,    age = 29;

๋ฐ์ดํ„ฐ ํƒ€์ž…#

์ตœ์‹  ECMAScript์—๋Š” ์—ฌ์„ฏ๊ฐ€์ง€ ๊ธฐ๋ณธ ํƒ€์ž…(Primitive type)๊ณผ ํ•œ๊ฐ€์ง€ ์ฐธ์กฐ ํƒ€์ž… (Reference type)์˜ 7๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž…์„ค๋ช…ํƒ€์ž…
Booleantrue , false ๋‘ ๊ฐ€์ง€ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋…ผ๋ฆฌ ํƒ€์ž…['๊ธฐ๋ณธ ํƒ€์ž…']
Null๋”ฑ ํ•œ๊ฐ€์ง€ ๊ฐ’ null ๋งŒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…['๊ธฐ๋ณธ ํƒ€์ž…']
Undefined๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜, undefined ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํƒ€์ž…['๊ธฐ๋ณธ ํƒ€์ž…']
Number์ˆซ์ž ์ž๋ฃŒํ˜•['๊ธฐ๋ณธ ํƒ€์ž…']
String๋ฌธ์ž์—ด ์ž๋ฃŒํ˜•['๊ธฐ๋ณธ ํƒ€์ž…']
Symbol (ECMAScript 6์— ์ถ”๊ฐ€๋จ)๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ(immutable) ์›์‹œ ํƒ€์ž…['๊ธฐ๋ณธ ํƒ€์ž…']
Object์‹๋ณ„์ž๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฐ’['์ฐธ์กฐ ํƒ€์ž…']

Symbol ํƒ€์ž…์€ ES6์—์„œ ์ถ”๊ฐ€๋œ ํƒ€์ž…์œผ๋กœ ์ด ์ฑ…์—์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค. Symbol ํƒ€์ž…์—๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์ž.

๐Ÿ”— Symbol | PoiemaWeb

typeof ์—ฐ์‚ฐ์ž#

ECMAScript๋Š” ๋Š์Šจํ•œ ํƒ€์ž…์„ ์ฑ„ํƒํ–ˆ์œผ๋ฏ€๋กœ ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์•Œ์•„๋‚ด์•ผ ํ•  ๋•Œ๋Š” typeof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋ณ€์ˆ˜์— typeof ์—ฐ์‚ฐ์ž๋ฅผ ์ ์šฉํ•˜๋ฉด ๋‹ค์Œ ๋ฌธ์ž์—ด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ : "undefined"

  • ๋ถˆ๋ฆฌ์–ธ : "boolean"

  • ๋ฌธ์ž์—ด : "string"

  • ์ˆซ์ž : "number"

  • ํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ๊ฐ์ฒด ๋˜๋Š” null : "object"

  • ํ•จ์ˆ˜ : "function"

typeof ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.

var message = 'some string';console.log(typeof message); // stringconsole.log(typeof message); // string

typeof ๋Š” ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฐ์‚ฐ์ž์ด๋ฏ€๋กœ ๊ด„ํ˜ธ๋Š” ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๋ช‡ ๊ฐ€์ง€ typeof์˜ ๊ฒฐ๊ณผ๋“ค์ด๋‹ค.

typeof ''; // stringtypeof 1; // numbertypeof NaN; // numbertypeof true; // booleantypeof []; // objecttypeof {}; // objecttypeof new String(); // objecttypeof new Date(); // objecttypeof /test/gi; // objecttypeof function () {}; // functiontypeof undefined; // undefinedtypeof null; // object (์„ค๊ณ„์  ๊ฒฐํ•จ)typeof undeclared; // undefined (์„ค๊ณ„์  ๊ฒฐํ•จ)

typeof null === 'object'; ์˜ ๊ฒฐ๊ณผ๊ฐ€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋‹ค. JavaScript์˜ ์ฒซ ๋ฒˆ์งธ๋ฒ„์ „์—์„œ ๋ณ€์ˆ˜์˜ ๊ฐ’์€ 32๋น„ํŠธ ๋‹จ์œ„๋กœ ์ €์žฅ๋˜์—ˆ๋Š”๋ฐ, 1-3๋น„ํŠธ๋Š” ํƒ€์ž… ํƒœ๊ทธ๋กœ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์— ๋Œ€ํ•ด ์ €์žฅํ–ˆ๊ณ  ๋‚˜๋จธ์ง€ ๋น„ํŠธ์— ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋•Œ ๊ฐ์ฒด์˜ ํƒ€์ž…ํƒœ๊ทธ๊ฐ€ 000 ์ด์—ˆ๊ณ , null ์€ ๋Œ€๋ถ€๋ถ„์˜ ํ”Œ๋žซํผ์—์„œ 0x00 ์„ ๊ฐ€์ง€๋Š” NULL ํฌ์ธํ„ฐ์˜€์œผ๋ฏ€๋กœ typeof์˜ ๊ฒฐ๊ณผ๊ฐ€ "object" ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด์— ๋Œ€ํ•ด ์ฑ…์—์„œ๋Š” null ์ด ๋นˆ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ฐ’์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์ด๋ผ๊ณ  ์„ค๋ช…ํ–ˆ๊ณ , ๋ช‡๋ช‡ ๊ธ€์—์„œ๋Š” ๋ถˆํ–‰ํžˆ๋„ ์ˆ˜์ •๋  ์ˆ˜ ์—†๋Š” ๋ฒ„๊ทธ ๋˜๋Š” ์„ค๊ณ„์  ๊ฒฐํ•จ์ด๋ผ๊ณ  ์„ค๋ช…ํ–ˆ๋‹ค. ๊ธฐ๋ณธ ํƒ€์ž…์œผ๋กœ ์ •์˜๋œ null ์„ ํƒ€์ž… ์ฒดํฌ ์—ฐ์‚ฐ์ž typeof์œผ๋กœ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€์•„๋ฌด๋ž˜๋„ ํ˜ผ๋ž€์„ ์ดˆ๋ž˜ํ•˜๋Š” ๊ตฌํ˜„์ด๋ผ๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

๐Ÿ”— typeof - MDN ๐Ÿ”— "typeof-null"์˜ ์—ญ์‚ฌ - FEDevelopers/tech.description ๐Ÿ”— Type Checking | PoiemaWeb

undefined#

๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด undefined ๊ฐ€ ํ• ๋‹น๋œ๋‹ค.

var message;console.log(message == undefined); // true

๋ช…์‹œ์ ์œผ๋กœ undefined ๋ฆฌํ„ฐ๋Ÿด์„ ํ• ๋‹นํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

undefined ๋ฅผ ํ†ตํ•ด ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์™€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ typeof๋Š” ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์—๋„ ์‹คํ–‰๋˜๋ฏ€๋กœ ์œ ์˜ํ•œ๋‹ค.

var message;// var age;
console.log(message); // undefinedconsole.log(age); // error
console.log(typeof message); // undefinedconsole.log(typeof age); // undefined

๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜๋ฅผ ํ•ญ์ƒ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๋Š”๋ฐ, ํ•ญ์ƒ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค๋ฉด, typeof์—์„œ undefined ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์„ ๋•Œ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๊ฒƒ์ธ์ง€ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

Null#

Null ํƒ€์ž…์€ ํ•˜๋‚˜์˜ ๊ฐ’ null ์„ ๊ฐ–๋Š”๋‹ค. null ์€ ๋นˆ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ด๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์ •์˜ ํ•  ๋•Œ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•  ์ƒ๊ฐ์ด๋ผ๋ฉด, ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ null ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์—†์„ ๋•Œ์—๋Š” ํ•ญ์ƒ null ์ด ์˜ค๊ฒŒ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•  ๋•Œ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ๋ช…์‹œ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

if (car != null) {    // car๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ}

undefined ๋Š” null ์—์„œ ํŒŒ์ƒํ•˜์—ฌ ํ‘œ๋ฉด์ ์œผ๋กœ๋Š” ๋™์ผํ•œ ๊ฒƒ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด == ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด true ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” == ์—ฐ์‚ฐ์ž๊ฐ€ ์•”์‹œ์  ํ˜•๋ณ€ํ™˜์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , === ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด false ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

console.log(null == undefined); // trueconsole.log(null === undefined); // false

Boolean#

Boolean ํƒ€์ž…์€ true ์™€ false ๋‘ ๊ฐ€์ง€ ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ผ๋ฆฌ ํƒ€์ž…์ด๋‹ค. ๋ฆฌํ„ฐ๋Ÿด์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— True ๋‚˜ False๋Š” Boolean ํƒ€์ž…์ด ์•„๋‹ˆ๋‹ค.

ECMAScript์—์„œ๋Š” ๋ชจ๋“  ํƒ€์ž…์„ Boolean ๊ฐ’์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, Boolean() ํ•จ์ˆ˜๋ฅผํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜, if ์กฐ๊ฑด๋ฌธ์— ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ํƒ€์ž…์„ Boolean์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž…true๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ’false๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ’
Booleantruefalse
String๋น„์–ด ์žˆ์ง€ ์•Š์€ ๋ชจ๋“  ๋ฌธ์ž์—ด"" (๋นˆ ๋ฌธ์ž์—ด)
Number0์ด ์•„๋‹Œ ๋ชจ๋“  ์ˆซ์ž, ๋ฌดํ•œ๋Œ€ ํฌํ•จ0 , -0 , 0n , NaN
Undefinedํ•ด๋‹น ์—†์Œundefined
Objectnull ์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฐ์ฒดnull

Number#

ECMAScript๋Š” IEEE-754 ํ˜•์‹์˜ ์ •์ˆ˜, ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž ํ‘œ์ค€์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์ธ ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด ํ˜•์‹์€ 10์ง„์ˆ˜์ด๊ณ  8์ง„์ˆ˜, 16์ง„์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ์—ญ์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 8์ง„์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์€ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ 0, ๊ทธ ๋’ค์—๋Š” 0๋ถ€ํ„ฐ 7๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ์™€์•ผํ•˜๊ณ , ๋ฒ—์–ด๋‚˜๋Š” ์ˆซ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์ฒ˜์Œ์˜ 0์„ ๋ฌด์‹œํ•˜๊ณ  10์ง„๋ฒ•์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. (์ŠคํŠธ๋ฆญํŠธ ๋ชจ๋“œ์—์„œ๋Š” 8 ์ง„๋ฒ• ๋ฆฌํ„ฐ๋Ÿด์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฌธ๋ฒ• ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.)

16์ง„์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์€ ์ฒซ ๋‘ ๋ฌธ์ž์— 0x์„ ์“ฐ๊ณ  16์ง„์ˆ˜ ์ˆซ์ž๋ฅผ ์“ด๋‹ค. ๋Œ€์†Œ๋ฌธ์ž๋Š” ๊ตฌ๋ณ„ํ•˜์ง€์•Š๋Š”๋‹ค.

var intNum = 55; // 10์ง„์ˆ˜ ์ •์ˆ˜
var octNum1 = 070; // 56์˜ 8์ง„๋ฒ• ํ‘œ๊ธฐvar octNum2 = 079; // 10์ง„๋ฒ• 79๋กœ ๊ฐ„์ฃผํ•จvar octNum3 = 08; // 10์ง„๋ฒ• 8๋กœ ๊ฐ„์ฃผํ•จ
var hexNum1 = 0xa; // 10์˜ 16์ง„๋ฒ• ํ‘œ๊ธฐvar hexNum2 = 0x1f; // 31์˜ 16์ง„๋ฒ• ํ‘œ๊ธฐvar hexNum3 = 0x1f; // 31์˜ 16์ง„๋ฒ• ํ‘œ๊ธฐ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š์Œ)

๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์†Œ์ˆ˜์ ์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์†Œ์ˆ˜์  ๋’ค์— ์ˆซ์ž๋ฅผ ์“ด๋‹ค. ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋Š” ์ •์ˆ˜๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‘ ๋ฐฐ ์†Œ๋ชจํ•˜๋ฏ€๋กœ ECMAScript์—์„œ๋Š” ๊ฐ€๋Šฅํ•œํ•œ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•˜๋ ค ํ•œ๋‹ค.

var floatNum1 = 1.1;var floatNum2 = 0.1;var floatNum3 = 1; // ์†Œ์ˆ˜์  ๋’ค์— ์ˆซ์ž๊ฐ€ ์—†์œผ๋ฏ€๋กœ 1๋กœ ๊ฐ„์ฃผvar floatNum4 = 10.0; // ์†Œ์ˆ˜์  ๋’ค๊ฐ€ 0์ด๋ฏ€๋กœ 10์œผ๋กœ ๊ฐ„์ฃผ

๋Œ€๋‹จํžˆ ํฌ๊ฑฐ๋‚˜ ์ž‘์€ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ๋Š” 'e-ํ‘œ๊ธฐ๋ฒ•(์ง€์ˆ˜ ํ‘œ๊ธฐ๋ฒ•)'์„ ์“ด๋‹ค. ์ง€์ˆ˜ ํ‘œ๊ธฐ๋ฒ•์€ e ์•ž์˜ ์ˆซ์ž์— 10์„ e ๋’ค์˜ ์ˆซ์ž๋งŒํผ ๊ณฑํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค. e ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

var floatNum = 3.125e7; // 31,250,000

ECMAScript๋Š” ์†Œ์ˆ˜์  ๋’ค์— 0์ด 6๊ฐœ ์ด์ƒ ์žˆ๋Š” ๋ชจ๋“  ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ์ง€์ˆ˜ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋Š” ์†Œ์ˆ˜์  ์•„๋ž˜ 17์ž๋ฆฌ๊นŒ์ง€ ์ •ํ™•ํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์‚ฌ์น™ ์—ฐ์‚ฐ์— ์žˆ์–ด์„œ๋Š” ๋ถ€์ •ํ™•ํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 0.1๊ณผ 0.2๋ฅผ ๋”ํ•˜๋ฉด 0.3์ด ์•„๋‹ˆ๋ผ 0.30000000000000004๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋Ÿฐ ์—๋Ÿฌ ๋•Œ๋ฌธ์— ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ํ‰๊ฐ€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

โ˜๏ธ ์ด ๋ฌธ์ œ๋Š” IEEE-754 ํ‘œ์ค€์˜ ๋ฌธ์ œ์ด๊ณ  ECMAScript์—๋งŒ ์ด๋Ÿฐ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

ECMAScript์—๋Š” ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ œ์ผ ์ž‘์€ ์–‘์˜ ์ˆซ์ž(์ตœ์†Ÿ๊ฐ’์ด ์•„๋‹˜)์™€ ์ตœ๋Œ“๊ฐ’์ด Number ๊ฐ์ฒด์˜ MIN_VALUE, MAX_VALUE ํ”„๋กœํผํ‹ฐ์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. MAX_VALUE๋ฅผ ๋„˜๋Š” ์ˆซ์ž์ธ ๊ฒฝ์šฐ ์–‘์ˆ˜๋Š” Infinity๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ ์Œ์ˆ˜๋Š” -Infinity๋กœ ๋ณ€ํ™˜๋œ๋‹ค. MIN_VALUE ์ดํ•˜์˜ ์ˆซ์ž๋Š” 0 ๋˜๋Š” -0 ์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

์ˆซ์žํ˜• ๊ฐ’ ์ค‘์—๋Š” NaN(Not a Number)๋ผ๋Š” ๊ฐ’์ด ์žˆ๋Š”๋ฐ, ์ด ๊ฐ’์€ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์œผ๋กœ์˜๋„ํ•œ ์กฐ์ž‘์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆ„๋ ค ํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, ECMAScript์—์„œ๋Š” NaN ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ฒ˜๋ฆฌ๋Š” ๊ณ„์† ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋‹ค์Œ์€ NaN์˜ ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•์ด๋‹ค.

  • NaN์ด ํฌํ•จ๋œ ์กฐ์ž‘์€ ํ•ญ์ƒ NaN์ด๋‹ค. (NaN / 10 = NaN)

  • NaN์€ ์–ด๋–ค ๊ฐ’๊ณผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ NaN ๋ผ๋ฆฌ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋•Œ๋ฌธ์— ECMAScript์—๋Š” isNaN() ์ด๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๊ณ  ์ด ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ๊ฐ’์ด '์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’'์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.

isNaN(NaN); // trueisNaN(undefined); // trueisNaN({}); // true
isNaN(true); // falseisNaN(null); // falseisNaN(37); // false
// stringsisNaN('37'); // false: "37" is converted to the number 37 which is not NaNisNaN('37.37'); // false: "37.37" is converted to the number 37.37 which is not NaNisNaN('37,5'); // trueisNaN('123ABC'); // true:  parseInt("123ABC") is 123 but Number("123ABC") is NaNisNaN(''); // false: the empty string is converted to 0 which is not NaNisNaN(' '); // false: a string with spaces is converted to 0 which is not NaN
// datesisNaN(new Date()); // falseisNaN(new Date().toString()); // true
// This is a false positive and the reason why isNaN is not entirely reliableisNaN('blabla'); // true: "blabla" is converted to a number.// Parsing this as a number fails and returns NaN

โ˜๏ธ ES6์—์„œ๋Š” Number.inNaN() ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์ด ๋ฐฉ๋ฒ•์ด ์ˆซ์ž x ์— ๋Œ€ํ•ด NaN ์ธ์ง€ํ…Œ์ŠคํŠธํ•˜๋Š” ๋” ๋ฏฟ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜๋Š” Number() , parseInt() , parseFloat() ํ•จ์ˆ˜ ์„ธ ๊ฐ€์ง€์ด๋‹ค. Number() ํ•จ์ˆ˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ๋‘ ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

Number() ํ•จ์ˆ˜ ๊ทœ์น™#

  • Boolean ํƒ€์ž… true ์™€ false ๋Š” ๊ฐ๊ฐ 1๊ณผ 0์œผ๋กœ ๋ฐ˜ํ™˜

  • ์ˆซ์ž๋Š” ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜.

  • null ์€ 0

  • undefined ๋Š” NaN

  • ๋ฌธ์ž์—ด์„ ๋„˜๊ฒผ๋‹ค๋ฉด

    • ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค๋ฉด ๋ฆฌ๋”ฉ ์ œ๋กœ๋ฅผ ๋ชจ๋‘ ๋ฒ„๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€๋ฅผ 10์ง„์ˆ˜๋กœ๋ณ€ํ™˜. ๋ฌธ์ž์—ด ๋งจ ์•ž์˜ + ๋‚˜ - ๊ธฐํ˜ธ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ๋ณด์กด.

    • "1.1"๊ณผ ๊ฐ™์€ ์œ ํšจํ•œ ๋ถ€๋™์†Œ์ˆ˜์  ํ˜•์‹์ด๋ผ๋ฉด ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž ๋ฐ˜ํ™˜

    • "0xf" ๊ฐ™์€ ์œ ํšจํ•œ 16์ง„์ˆ˜ ํ˜•์‹์ด๋ผ๋ฉด ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

    • ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด 0์„ ๋ฐ˜ํ™˜

    • ์•ž์—์„œ ์„ค๋ช…ํ•œ ํ˜•์‹์— ๋งž์ง€ ์•Š์œผ๋ฉด NaN ์„ ๋ฐ˜ํ™˜

  • ๊ฐ์ฒด๋ฅผ ๋„˜๊ธฐ๋ฉด valueOf() ๋ฉ”์†Œ๋“œ ๋ฐ˜ํ™˜ ๊ฐ’์— ๋Œ€ํ•ด Number() ํ•จ์ˆ˜ ๊ทœ์น™ ์ ์šฉ, ๊ฒฐ๊ณผ๊ฐ€ NaN ์ด๋ฉด toString() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ํ›„ ๋ฌธ์ž์—ด ๋ณ€ํ™˜ ๊ทœ์น™ ์ ์šฉ.

var num1 = Number('Hello world'); // NaNvar num2 = Number(''); // 0var num3 = Number('000011'); // 11var num4 = Number(true); // 1

parseInt()#

Number() ํ•จ์ˆ˜๋กœ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋ ค๋ฉด ๋ณต์žกํ•œ ๊ทœ์น™์„ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ •์ˆ˜ ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ๋ณดํ†ต parseInt() ํ•จ์ˆ˜๋ฅผ ์“ด๋‹ค. parseInt() ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

  • ๋ฆฌ๋”ฉ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ „๋ถ€ ๋ฒ„๋ฆฐ๋‹ค.

  • ๋ฆฌ๋”ฉ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋ฒ„๋ฆฐ ๊ฒฐ๊ณผ์˜ ์ฒซ ๋ฌธ์ž๊ฐ€ ์ˆซ์ž๋‚˜ + , - ๊ธฐํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด NaN ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๋ฆฌ๋”ฉ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋ฒ„๋ฆฐ ๊ฒฐ๊ณผ์˜ ์ฒซ ๋ฌธ์ž๊ฐ€ ์ˆซ์ž๋‚˜ + , - ๊ธฐํ˜ธ๋ผ๋ฉด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ๋ณ€ํ™˜์„ ์ง„ํ–‰ํ•œ๋‹ค.

    • parseInt() ํ•จ์ˆ˜๋Š” 10์ง„์ˆ˜, 16์ง„์ˆ˜๋ฅผ ์ธ์‹ํ•˜๊ณ  ๊ทธ์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•œ๋‹ค. (ES5 ๋ถ€ํ„ฐ parseInt ๋Š” 8์ง„์ˆ˜ ๋ฌธ์ž์—ด์„ ํ•ด์„ํ•˜์ง€ ์•Š๋Š”๋‹ค.)
parseInt('1234blue'); // 1234parseInt(''); // NaNparseInt('0xA'); // 10parseInt('-0xA'); // -10parseInt('22.5'); // 22

๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŒŒ์‹ฑํ•˜๋ ค๋Š” ๊ฐ’์˜ ํ˜•์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด 16์ง„์ˆ˜, 8 ์ง„์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ํ•ด๋‹น ํ˜•์‹์œผ๋กœ ํŒŒ์‹ฑํ•œ๋‹ค.

โ˜๏ธ ์ง„๋ฒ• ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์˜๋„์™€ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋Š˜ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

parseInt('10', 2); // 2parseInt('10', 8); // 8parseInt('10', 10); // 10parseInt('10', 16); // 16

parseFloat()#

parseFloat() ํ•จ์ˆ˜๋Š” 0๋ฒˆ์งธ ์œ„์น˜๋ถ€ํ„ฐ ๊ฐ ๋ฌธ์ž๋ฅผ ๋ณ€ํ™˜ํ•œ๋‹ค๋Š” ์ ์—์„œ parseInt() ์™€๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. parseFloat() ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ์ž˜๋ชป๋œ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ํŒŒ์‹ฑ์„ ๊ณ„์†ํ•œ๋‹ค. parseInt() ์™€์˜ ๋˜ ๋‹ค๋ฅธ ์ฐจ์ด๋Š” ๋ฆฌ๋”ฉ ์ œ๋กœ๋ฅผ ํ•ญ์ƒ ๋ฌด์‹œํ•˜์—ฌ, 16์ง„์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์„ ํ•ญ์ƒ 0์œผ๋กœ ํ•ด์„ํ•œ๋‹ค. (์ง„๋ฒ• ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ฒจ๋„ ๋ฌด์‹œํ•œ๋‹ค) ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์—ด์— ์†Œ์ˆ˜์ ์ด ์—†๊ฑฐ๋‚˜ ์†Œ์ˆ˜์  ๋’ค์— 0๋งŒ ์žˆ๋‹ค๋ฉด parseFloat() ๋Š” ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

parseFloat('1234blue'); // 1234parseFloat('0xA'); // 0parseFloat('22.5'); // 22.5parseFloat('22.34.5'); // 22.34parseFloat('0908.5'); // 908.5parseFloat('3.125e7'); // 31250000

String#

๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ 16๋น„ํŠธ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์˜ ์—ฐ์†์œผ๋กœ ํฐ๋”ฐ์˜ดํ‘œ( " )๋‚˜ ์ž‘์€๋”ฐ์˜ดํ‘œ( ' )๋กœ ๊ฐ์‹ธ์„œ ํ‘œํ˜„ํ•œ๋‹ค. ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด๊ณผ ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์€์™„์ „ํžˆ ๋˜‘๊ฐ™๋‹ค. ํฐ๋”ฐ์˜ดํ‘œ๋กœ ์‹œ์ž‘ํ•œ ๋ฌธ์ž์—ด์€ ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๋๋‚˜์•ผ ํ•˜๋ฉฐ, ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ์‹œ์ž‘ํ•œ ๋ฌธ์ž์—ด์€ ๋ฐ˜๋“œ์‹œ ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ๋๋‚ด์•ผ ํ•œ๋‹ค.

๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ํƒ€์ž…์—์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž ๋ฆฌํ„ฐ๋Ÿด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋ฆฌํ„ฐ๋Ÿด์˜๋ฏธ
\n์ค„๋ฐ”๊ฟˆ
\tํƒญ
\b๋ฐฑ์ŠคํŽ˜์ด์Šค
\r์บ๋ฆฌ์ง€ ๋ฆฌํ„ด
\fํผ ํ”ผ๋“œ
\\์—ญ์Šฌ๋ž˜์‹œ
\'์ž‘์€๋”ฐ์˜ดํ‘œ - ์ž‘์€๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด ์•ˆ์—์„œ ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์จ์•ผํ•  ๋•Œ ์‚ฌ์šฉ
\"ํฐ๋”ฐ์˜ดํ‘œ - ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด ์•ˆ์—์„œ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ์จ์•ผํ•  ๋•Œ ์‚ฌ์šฉ
\xnn16์ง„์ˆ˜ ์ฝ”๋“œ 'nn'์œผ๋กœ ํ‘œํ˜„ํ•œ ๋ฌธ์ž. n์€ 0๋ถ€ํ„ฐ f๊นŒ์ง€์˜ 16์ง„์ˆ˜.
\unnnn16์ง„์ˆ˜ ์ฝ”๋“œ 'nnnn'์œผ๋กœ ํ‘œํ˜„ํ•œ ๋ฌธ์ž. n์€ 0๋ถ€ํ„ฐ f๊นŒ์ง€์˜ 16์ง„์ˆ˜.

์ด ๋ฌธ์ž ๋ฆฌํ„ฐ๋Ÿด์€ ๋ฌธ์ž์—ด ์† ์–ด๋””์—๋“  ์“ธ ์ˆ˜ ์žˆ๊ณ , ํ•œ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰๋œ๋‹ค.

var text = 'This is the letter sigma: \\u03a3.';

๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” length ํ”„๋กœํผํ‹ฐ๋ฅผ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ํ”„๋กœํผํ‹ฐ๋Š” ๋ฌธ์ž์—ด์— ํฌํ•จ๋œ 16๋น„ํŠธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ๋ฌธ์ž์—ด์— 32๋น„ํŠธ ๋ฌธ์ž๊ฐ€ ๋“ค์–ด์žˆ๋‹ค๋ฉด length ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ์ •ํ™•ํžˆ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

text.length; // 28

ECMAScript์˜ ๋ฌธ์ž์—ด์€ ๋ถˆ๋ณ€(immutable)์ด๋‹ค. ์ฆ‰ ๋ฌธ์ž์—ด์ด ์ผ๋‹จ ๋งŒ๋“ค์–ด ์ง€๋ฉด ๊ทธ ๊ฐ’์„๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ๋ณ€์ˆ˜์— ์ €์žฅํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ”๊พธ๋ ค๋ฉด ๊ธฐ์กด์˜ ๋ฌธ์ž์—ด ๋Œ€์‹  ์ƒˆ ๋ฌธ์ž์—ด์„ ํ•ด๋‹น ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

var lang = 'Java';lang = lang + 'Script';

์œ„ ์˜ˆ์ œ๋Š” ๋‹จ์ˆœํžˆ lang ์— ๋‹ด๊ธด "Java" ๋ฌธ์ž์—ด ๋’ค์— "Script"๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜์ง€๋งŒ, ๋‚ด๋ถ€์—์„œ๋Š” 10๊ธ€์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ๋จผ์ € ๋งŒ๋“ค๊ณ , "Java" ์™€ "Script"๋ฅผ ์ฑ„์›Œ "JavaScript"๋ฅผ ๋งŒ๋“  ๋‹ค์Œ, ํ•„์š” ์—†์–ด์ง„ ๊ธฐ์กด์˜ "Java"์™€ "Script"๋ฅผํŒŒ๊ดดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

๋ฌธ์ž์—ด ๋ณ€ํ™˜#

๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด toString() ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

var age = 11;var ageAsString = age.toString(); // ๋ฌธ์ž์—ด "11"var found = true;var foundAsString = found.toString(); // ๋ฌธ์ž์—ด "true"

toString() ๋ฉ”์„œ๋“œ๋Š” Number, Boolean, Object, String ์— ์กด์žฌํ•˜๋ฉฐ, Null, Undefined ์—๋Š” ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. Number์—์„œ toString() ๋ฉ”์„œ๋“œ์— ์ง„๋ฒ•์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

var num = 10;console.log(num.toString()); // "10"console.log(num.toString(2)); // "1010"console.log(num.toString(8)); // "12"console.log(num.toString(10)); // "10"console.log(num.toString(16)); // "a"

String() ํ•จ์ˆ˜๋Š” toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๊ฐ’์ด null ์ด๋‚˜ undefined ์ผ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. String() ํ•จ์ˆ˜๋Š” ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

  • ๊ฐ’์— toString() ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด ํ˜ธ์ถœํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๊ฐ’์ด null ์ด๋ฉด "null" ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๊ฐ’์ด undefined ์ด๋ฉด "undefined"๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

var value1 = 10;var value2 = true;var value3 = null;var value4;
console.log(String(value1)); // "10"console.log(String(value2)); // "true"console.log(String(value3)); // "null"console.log(String(value4)); // "undefined"

Object#

๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์˜ ์ง‘ํ•ฉ์ด๋‹ค. ๊ฐ์ฒด๋Š” new ์—ฐ์‚ฐ์ž ๋‹ค์Œ์— ์ƒˆ๋กœ ๋งŒ๋“ค ๊ฐ์ฒด ํƒ€์ž…์˜ ์ด๋ฆ„์„ ์จ์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•ด๋„๋˜์ง€๋งŒ, ๊ถŒ์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

var o1 = new Object();var o2 = new Object(); // ์œ ํšจํ•˜์ง€๋งŒ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

Object ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋Š” Object ํƒ€์ž…์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ „๋ถ€ ์ƒ์†ํ•œ๋‹ค. Object ์ธ์Šคํ„ด์Šค๋Š” ๋‹ค์Œ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • constructor : ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์“ฐ์ธ ํ•จ์ˆ˜. ์œ„์—์„œ๋Š” Object() ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ์ž์ด๋‹ค.

  • hasOwnProperty(propertyName) : ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๊ฐ€ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค์— ๊ณ ์œ ํ•˜๋ฉฐ, ํ”„๋กœํ† ํƒ€์ž…์—์„œ ์ƒ์†ํ•˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ•œ๋‹ค. propertyName ์€ ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด์ด์–ด์•ผํ•œ๋‹ค.

  • isPrototypeOf(object) : ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž…์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

  • propertyIsEnumerable(propertyName) : ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋ฅผ for-in ๋ฌธ์—์„œ ๋‚˜์—ดํ•  ์ˆ˜์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

  • toLocaleString() : ๊ฐ์ฒด๋ฅผ ์ง€์—ญ์— ๋งž๊ฒŒ ํ‘œํ˜„ํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • toString() : ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • valueOf() : ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž, Boolean์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. toString() ๊ณผ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค.

โ˜๏ธ ์ด๋Š” ECMA-262์—์„œ ์ •์˜ํ•˜๋Š” ๊ฐ์ฒด์˜ ๋ช…์„ธ์ธ๋ฐ, ์ด๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์— ๋ชจ๋‘์ ์šฉํ•  ํ•„์š”๋Š” ์—†๋‹ค. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด๋Š” ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด์ด๋ฉฐ, ํ˜ธ์ŠคํŠธ๊ตฌํ˜„์—์„œ ์ •์˜ํ•˜๋Š” ๋Œ€๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋Š” ECMA-262๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ Object๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

์—ฐ์‚ฐ์ž#

๋‹จํ•ญ ์—ฐ์‚ฐ์ž#

๋‹จ ํ•˜๋‚˜์˜ ๊ฐ’์—๋งŒ ์ ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž

์ฆ๊ฐ ์—ฐ์‚ฐ์ž#

++age , age++ ์ฒ˜๋Ÿผ ํ”ผ์—ฐ์‚ฐ์ž ์•ž์ด๋‚˜ ๋’ค์— ์จ์„œ ํ•ด๋‹น ๋ณ€์ˆ˜์— 1์„ ์ฆ๊ฐํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค. ์•ž์— ์“ฐ๋ฉด ๋ฌธ์žฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์ „์— ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊พธ๊ณ , ๋’ค์— ์“ฐ๋ฉด ๋ฌธ์žฅ์„ ํ‰๊ฐ€ํ•œ๋‹ค์Œ์— ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊พผ๋‹ค. ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๋Š” ์ •์ˆ˜ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๋ฌธ์ž์—ด์ด๋‚˜ Boolean, ๋ถ€๋™์†Œ์ˆ˜์ , ๊ฐ์ฒด์—๋„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

  • ์œ ํšจํ•œ ์ˆซ์ž ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์— ์ ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ฐ”๊พผ ํ›„ ์ฆ๊ฐํ•˜๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊พผ๋‹ค.

  • ์œ ํšจํ•œ ์ˆซ์ž ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ณ€์ˆ˜์˜ ๊ฐ’์€ NaN ์ด ๋œ๋‹ค.

  • false ์ธ Boolean์— ์ ์šฉํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์„ 0์œผ๋กœ ๋ฐ”๊พผ ํ›„ ์ฆ๊ฐํ•˜๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊พผ๋‹ค.

  • true ์ธ Boolean์— ์ ์šฉํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์„ 1๋กœ ๋ฐ”๊พผ ํ›„ ์ฆ๊ฐํ•˜๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ˆซ์ž๋กœ๋ฐ”๊พผ๋‹ค.

  • ๋ถ€๋™์†Œ์ˆ˜์ ์— ์ ์šฉํ•˜๋ฉด ๊ทธ๋Œ€๋กœ ์ฆ๊ฐํ•œ๋‹ค.

  • ๊ฐ์ฒด์— ์ ์šฉํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด์˜ valueOf ๋ฉ”์„œ๋“œ๋ฅผ ๋จผ์ € ํ˜ธ์ถœํ•ด์„œ ์ฆ๊ฐ์„ ์ ์šฉํ•  ๊ฐ’์„ ์–ป๋Š”๋‹ค. ๊ฒฐ๊ณผ๊ฐ€ NaN ์ด๋ผ๋ฉด toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ๊ทœ์น™์„ ๋‹ค์‹œ ์ ์šฉํ•œ๋‹ค. ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด์—์„œ ์ˆซ์ž๋กœ ๋ฐ”๋€๋‹ค.

var s1 = '2';var s2 = 'z';var b = false;var f = 1.1;var o = {    valueOf: function () {        return -1;    },};
s1++;s2++;b++;f--;o--;
console.log(s1, s2, b, f, o); // 3 NaN 1 0.10000000000000009 -2

๋‹จํ•ญ ํ”Œ๋Ÿฌ์Šค์™€ ๋‹จํ•ญ ๋งˆ์ด๋„ˆ์Šค#

๋‹จํ•ญ ํ”Œ๋Ÿฌ์Šค๋Š” ์ˆซ์žํ˜• ๊ฐ’์— ๋Œ€ํ•ด ์•„๋ฌด ํšจ๋ ฅ์„ ์ง€๋‹ˆ์ง€ ์•Š๋Š”๋‹ค. (๋ถ€ํ˜ธ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ ) ๋‹จํ•ญ ๋งˆ์ด๋„ˆ์Šค๋Š” ์ˆซ์žํ˜• ๊ฐ’์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พธ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹จํ•ญ ํ”Œ๋Ÿฌ์Šค์™€ ๋งˆ์ด๋„ˆ์Šค๋ฅผ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์— ์ ์šฉํ•˜๋ฉด ํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜์ธ Number() ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ๋™์ž‘ํ•˜๊ณ , ๊ทธ ์ดํ›„์— ๋ถ€ํ˜ธ๋ฅผ ์ ์šฉ ํ•œ๋‹ค.

๋น„ํŠธ ์—ฐ์‚ฐ์ž#

ECMAScript์—์„œ ๋ชจ๋“  ์ˆซ์ž๋Š” 64๋น„ํŠธ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜๋Š”๋ฐ, ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ์ด๋Ÿฌํ•œ 64๋น„ํŠธ ํ‘œํ˜„์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋Š” ๋Œ€์‹  32๋น„ํŠธ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋ฅผ ์ ์šฉํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ 64๋น„ํŠธ๋กœ ๋ฐ”๊พผ๋‹ค. ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜๋Š” 32๋น„ํŠธ ์ค‘ ๋งจ ์•ž์˜ ๋น„ํŠธ๋กœ ๋ถ€ํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ๋‚˜๋จธ์ง€ 31๋น„ํŠธ๋กœ ์ˆซ์ž์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 18์€ 00000000000000000000000000010010์ด๋‹ค.

์Œ์ˆ˜๋Š” '2์˜ ๋ณด์ˆ˜' ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. 2์˜ ๋ณด์ˆ˜๋Š” ๋‹ค์Œ์˜ ์„ธ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐํ•œ๋‹ค.

  • ์ ˆ๋Œ€ ๊ฐ’์˜ 2์ง„ ํ‘œํ˜„์„ ๊ตฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด -18์„ ์ฐพ์œผ๋ ค๋ฉด ๋จผ์ € 18์˜ ์ด์ง„ ํ‘œํ˜„์„ ๊ตฌํ•œ๋‹ค.

  • ๊ทธ ์ด์ง„ ํ‘œํ˜„์˜ ๋ชจ๋“  0์„ 1๋กœ ๋ฐ”๊พธ๊ณ  1์€ ๋ชจ๋‘ 0์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

  • ๊ฒฐ๊ณผ์— 1์„ ๋”ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์–ป์€ -18์˜ ์ด์ง„ ํ‘œํ˜„์€ 11111111111111111111111111101110 ์ด๋‹ค.

์Œ์ˆ˜ 2์ง„ ๋ฌธ์ž์—ด๋กœ ์–ป์œผ๋ ค๊ณ  ํ•˜๋ฉด ์ ˆ๋Œ€๊ฐ’์˜ 2์ง„ ํ‘œํ˜„์— ๋งˆ์ด๋„ˆ์Šค ๋ถ€ํ˜ธ๋ฅผ ๋ถ™์ธ ๊ฐ’์„ ์–ป๋Š”๋‹ค.

var num = -18;console.log(num.toString(2)); // "-10010"

๊ทธ๋ฆฌ๊ณ  ๋น„ํŠธ ์—ฐ์‚ฐ์—์„œ๋Š” ์ˆซ์ž ํƒ€์ž…์˜ ํŠน๋ณ„ํ•œ ๊ฐ’์ธ NaN ๊ณผ Infinity ๋ฅผ 0๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

๋˜ํ•œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์— ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋ฅผ ์ ์šฉํ•˜๋ฉด ๋จผ์ € ๊ฐ’์— Number() ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด์ˆซ์ž๋กœ ๋ฐ”๊พผ ๋‹ค์Œ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์ ์šฉํ•œ๋‹ค. ๊ฒฐ๊ณผ ๊ฐ’์€ ์ˆซ์ž๊ฐ€ ๋œ๋‹ค.

์—ฐ์‚ฐ์ž์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ค๋ช…
๋น„ํŠธ ANDa & bํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„ํŠธ๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ ๊ฐ๊ฐ ๋Œ€์‘ํ•˜๋Š” ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด ๊ทธ ๋น„ํŠธ๊ฐ’์— 1์„ ๋ฐ˜ํ™˜
๋น„ํŠธ ORabํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„ํŠธ๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ ๊ฐ๊ฐ ๋Œ€์‘ํ•˜๋Š” ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๊ฑฐ๋‚˜ ํ•œ ์ชฝ์ด 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜
๋น„ํŠธ XORa ^ bํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„ํŠธ๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ ๋Œ€์‘ํ•˜๋Š” ๋น„ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1์„ ๋ฐ˜ํ™˜
๋น„ํŠธ NOT~ aํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ฐ˜์ „๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜
์™ผ์ชฝ ์‹œํ”„ํŠธa << ba ๋ฅผ b (< 32) ๋น„ํŠธ๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์‹œํ”„ํŠธ, ๋งจ ์˜ค๋ฅธ์ชฝ ๋น„ํŠธ๋Š” 0์œผ๋กœ ์ฑ„์›Œ์ง
๋ถ€ํ˜ธ ์œ ์ง€ ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธa >> ba ๋ฅผ b (< 32) ๋น„ํŠธ๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹œํ”„ํŠธ, ๋งจ ์™ผ์ชฝ ๋น„ํŠธ๋Š” ๋ถ€ํ˜ธ๋Œ€๋กœ ์ฑ„์›Œ์ง„๋‹ค
๋ถ€ํ˜ธ ๋ฒ„๋ฆผ ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธa >>> ba ๋ฅผ b (< 32) ๋น„ํŠธ๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹œํ”„ํŠธ, ๋งจ ์™ผ์ชฝ ๋น„ํŠธ๋Š” 0์œผ๋กœ ์ฑ„์›Œ์ง (๋ถ€ํ˜ธ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๋Š”๋‹ค)

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž#

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ๋ณดํ†ต Boolean ํƒ€์ž…์˜ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์“ฐ์ธ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Boolean ์™ธ์— ๋‹ค๋ฅธ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด Boolean์ด ์•„๋‹Œ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฐ์‚ฐ์ž๊ตฌ๋ฌธ์„ค๋ช…
๋…ผ๋ฆฌ AND ( && )expr1 && expr2expr1 ์„ true ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ expr2 ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด expr1 ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋…ผ๋ฆฌ OR ()expr1expr2expr1 ์„ true ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด expr1 ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด expr2 ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋…ผ๋ฆฌ NOT ( ! )!expr๋‹จ์ผ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ true ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด false ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด true ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

true ๋‚˜ false ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ์œ„์—์„œ ์‚ดํŽด๋ณด์•˜๋‹ค. ๋…ผ๋ฆฌ NOT ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋ณต์Šตํ•ด๋ณธ๋‹ค.

console.log(!false); // trueconsole.log(!'blue'); // falseconsole.log(!0); // trueconsole.log(!NaN); // trueconsole.log(!''); // trueconsole.log(!12345); // false

์ด๋ ‡๊ฒŒ ๋…ผ๋ฆฌ NOT ์—ฐ์‚ฐ์ž๋Š” ๋จผ์ € ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ Boolean ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ๊ฒฐ๊ณผ๋ฅผ ๋ถ€์ •ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ NOT ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ ์“ฐ๋Š” ๊ฒƒ์œผ๋กœ Boolean() ํ•จ์ˆ˜๋ฅผ ์“ด ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๋‹จ๋ฝ ํ‰๊ฐ€(short-circuit)#

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๋…ผ๋ฆฌ ํ‘œํ˜„์‹์˜ ๊ฒฝ์šฐ, ์ขŒ์ธก๋ถ€ํ„ฐ ํ‰๊ฐ€ํ•˜๋ฉด์„œ ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผํ‰๊ฐ€ํ•œ ์ˆœ๊ฐ„ ์ด๋ฏธ ์—ฐ์‚ฐ์ž์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ •ํ•ด์ง„๋‹ค๋ฉด ๋’ค์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ ๋‹จ๋ฝ ํ‰๊ฐ€๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ ํ‰๊ฐ€ ์ค‘ ๋ฐœ์ƒํ•ด์•ผํ•  ๋ถ€์ž‘์šฉ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค .

  • (๊ฑฐ์ง“ ํ‘œํ˜„์‹) && expr ๋Š” ๊ฑฐ์ง“ ํ‘œํ˜„์‹์œผ๋กœ, expr ๋ฅผ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • (์ฐธ ํ‘œํ˜„์‹) || expr ๋Š” ์ฐธ ํ‘œํ˜„์‹์œผ๋กœ, expr ๋ฅผ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ณฑ์…ˆ ๊ด€๋ จ ์—ฐ์‚ฐ์ž#

ECMAScript์—๋Š” ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ, ๋‚˜๋จธ์ง€์˜ ์„ธ ๊ฐ€์ง€ ๊ณฑ์…ˆ ๊ด€๋ จ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋‹ค. ์ด ์—ฐ์‚ฐ์ž๋“ค์€ C, Java ๊ฐ™์€ ์–ธ์–ด์˜ ์—ฐ์‚ฐ์ž์™€ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์— ์ ์šฉํ•  ๋•Œ์ž๋™์œผ๋กœ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ฐ”๊พธ๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, Number() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํƒ€์ž…์„ ๋ฐ”๊พผ๋‹ค.

๊ณฑ์…ˆ#

๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž๋Š” ์•„์Šคํ…Œ๋ฆฌ์Šคํฌ( * )๋ฅผ ์จ์„œ ๋‘ ์ˆซ์ž๋ฅผ ๊ณฑํ•˜๋Š”๋ฐ ์“ฐ์ธ๋‹ค.

var result = 34 * 56;

ํ•˜์ง€๋งŒ ํŠน๋ณ„ํ•œ ๊ฐ’์— ๋Œ€ํ•ด์„œ ๋‹ค์Œ์˜ ํ–‰๋™์„ ์ทจํ•œ๋‹ค.

  • ๊ฒฐ๊ณผ๊ฐ€ ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋„˜์œผ๋ฉด Infinity ๋‚˜ -Infinity ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ NaN ์ด๋ฉด ๊ฒฐ๊ณผ๋„ NaN ์ด๋‹ค.

  • Infinity ์— 0์„ ๊ณฑํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” NaN ์ด๋‹ค.

  • Infinity ์— 0์ด ์•„๋‹Œ ์œ ํ•œํ•œ ์ˆซ์ž๋ฅผ ๊ณฑํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” ๋ถ€ํ˜ธ์— ๋”ฐ๋ผ Infinity ๋˜๋Š” -Infinity ์ด๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด Number() ๋ฅผ ์ ์šฉํ•˜๊ณ  ๊ธฐํƒ€ ๊ทœ์น™์„ ์ ์šฉํ•ด์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

๋‚˜๋ˆ—์…ˆ#

๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์ž๋Š” ์Šฌ๋ž˜์‹œ( / ) ๊ธฐํ˜ธ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆˆ๋‹ค.

var result = 66 / 11;

๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์ž๋„ ํŠน๋ณ„ํ•œ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ํ–‰๋™์„ ์ทจํ•œ๋‹ค.

  • ๊ฒฐ๊ณผ๊ฐ€ ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋„˜์œผ๋ฉด Infinity ๋‚˜ -Infinity ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ NaN ์ด๋ฉด ๊ฒฐ๊ณผ๋„ NaN ์ด๋‹ค.

  • Infinity ๋ฅผ Infinity ๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ๋Š” NaN ์ด๋‹ค.

  • 0์„ 0์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ๋Š” NaN ์ด๋‹ค.

  • 0์ด ์•„๋‹Œ ์œ ํ•œํ•œ ์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ๋Š” ๋ถ€ํ˜ธ์— ๋”ฐ๋ผ Infinity ๋˜๋Š” -Infinity ์ด๋‹ค.

  • Infinity ์— ์ˆซ์ž๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ๋Š” ๊ฒฐ๊ณผ๋Š” ๋ถ€ํ˜ธ์— ๋”ฐ๋ผ Infinity ๋˜๋Š” -Infinity ์ด๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด Number() ๋ฅผ ์ ์šฉํ•˜๊ณ  ๊ธฐํƒ€ ๊ทœ์น™์„ ์ ์šฉํ•ด์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

๋‚˜๋จธ์ง€#

๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž๋Š” ํผ์„ผํŠธ( % ) ๊ธฐํ˜ธ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

var result = 26 % 5; // 1

๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž๋„ ํŠน๋ณ„ํ•œ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ํ–‰๋™์„ ์ทจํ•œ๋‹ค.

  • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ์ˆซ์ž๋ผ๋ฉด ์ผ๋ฐ˜์ ์ธ ๋‚˜๋ˆ—์…ˆ์„ ์ ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ์ขŒํ•ญ์ด ๋ฌดํ•œํ•œ ์ˆซ์ž์ด๊ณ  ์šฐํ•ญ์ด ์œ ํ•œํ•œ ์ˆซ์ž๋ผ๋ฉด ๊ฒฐ๊ณผ๋Š” NaN ์ด๋‹ค.

  • ์ขŒํ•ญ์ด ์œ ํ•œํ•œ ์ˆซ์ž์ด๊ณ  ์šฐํ•ญ์ด 0์ด๋ผ๋ฉด ๊ฒฐ๊ณผ๋Š” NaN ์ด๋‹ค.

  • Infinity ๋ฅผ Infinity ๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ๋Š” NaN ์ด๋‹ค.

  • ์ขŒํ•ญ์ด ์œ ํ•œํ•œ ์ˆซ์ž์ด๊ณ  ์šฐํ•ญ์ด ๋ฌดํ•œํ•œ ์ˆซ์ž๋ผ๋ฉด ๊ฒฐ๊ณผ๋Š” ์ขŒํ•ญ์ด๋‹ค.

  • ์ขŒํ•ญ์ด 0์ด๊ณ  ์šฐํ•ญ์ด 0์ด ์•„๋‹Œ ์ˆซ์ž๋ผ๋ฉด ๊ฒฐ๊ณผ๋Š” 0์ด๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด Number() ๋ฅผ ์ ์šฉํ•˜๊ณ  ๊ธฐํƒ€ ๊ทœ์น™์„ ์ ์šฉํ•ด์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

๋ง์…ˆ ๊ด€๋ จ ์—ฐ์‚ฐ์ž#

๋ง์…ˆ๊ณผ ๋บ„์…ˆ ์—ฐ์‚ฐ์ž๋Š” ๋‹จ์ˆœํ•œ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž์ด์ง€๋งŒ, ๋ฌธ์ž์—ด๊ฐ„์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

๋ง์…ˆ#

  • ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์„ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์— ํ•ฉ์นœ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด ๋‹ค๋ฅธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋‘ ๋ฌธ์ž์—ด์„ํ•ฉ์นœ๋‹ค.

var result1 = 5 + 5; // 10var result2 = 5 + '5'; // "55"

๋บ„์…ˆ#

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ String, Boolean, null, undefined ๋ผ๋ฉด Number() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋บ„์…ˆํ•œ๋‹ค.
var result1 = '5' - '3'; // 2var result2 = 7 - '2'; // 5

๊ด€๊ณ„ ์—ฐ์‚ฐ์ž#

๊ด€๊ณ„ ์—ฐ์‚ฐ์ž์—๋Š” ๋ฏธ๋งŒ( < ), ์ดˆ๊ณผ( > ), ์ดํ•˜( <= ), ์ด์ƒ( >= ) ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋‹ค. ์ด๋“ค์€ ์ผ๋ฐ˜์ ์ธ ์ˆ˜ํ•™ ๊ธฐํ˜ธ์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‘ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

var result1 = 5 > 3; // truevar result2 = 5 < 3; // false

ํ•˜์ง€๋งŒ ECMAScript์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋”ฐ๋ผ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ์ˆซ์ž์ด๋ฉด ์ˆซ์žํ˜• ๋น„๊ต๋ฅผ ํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ๋ฌธ์ž์—ด์ด๋ฉด, ๋ฌธ์ž์—ด์—์„œ ์„œ๋กœ ๋Œ€์‘ํ•˜๋Š” ๋ฌธ์ž์˜ ๋ฌธ์ž ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ˆซ์ž๋ผ๋ฉด ๋‹ค๋ฅธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋น„๊ตํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ฐ์ฒด๋ผ๋ฉด valueOf() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ด์ „ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•œ๋‹ค. valueOf ๋ฉ”์„œ๋“œ๊ฐ€ ์—†์œผ๋ฉด toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ด์ „๊ทœ์น™์— ๋”ฐ๋ผ ๊ทธ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ถˆ๋ฆฌ์–ธ์ด๋ผ๋ฉด ์ˆซ์ž๋กœ ๋ฐ”๊พผ ํ›„ ๋น„๊ตํ•œ๋‹ค.

๊ด€๊ณ„ ์—ฐ์‚ฐ์ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ๋ฌธ์ž์—ด์ผ ๋•Œ๊ฐ€ ํŠนํžˆ ์ฃผ์˜๋ฅผ ์š”ํ•˜๋Š”๋ฐ, ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž๋ฅผ๋ฌธ์ž์—ด์— ์ ์šฉํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž ์ฝ”๋“œ์™€ ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž ์ฝ”๋“œ๋ฅผ ๋Œ€์‘ํ•˜๋ฉฐ ๋น„๊ตํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋Œ€๋ฌธ์ž์˜ ๋ฌธ์ž ์ฝ”๋“œ๋Š” ์†Œ๋ฌธ์ž์˜ ๋ฌธ์ž ์ฝ”๋“œ๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์˜ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

var result = 'Brick' < 'alphabet'; // true

๋”ฐ๋ผ์„œ ๋‘ ๋ฌธ์ž์—ด์˜ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋ฅผ ๋น„๊ตํ•˜๋ ค๋ฉด ๋‘ ๋ฌธ์ž์—ด์˜ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ํ†ต์ผํ•œ ๋‹ค์Œ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.

var result = 'Brick'.toLowerCase() < 'alphabet'.toLowerCase(); // false

๋˜ํ•œ ์ˆซ์ž ํ˜•ํƒœ์˜ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ฐฉ๊ฐํ•˜๊ธฐ ์‰ฝ๋‹ค.

var result = '23' < '3'; // true

์ด ์ฝ”๋“œ๋Š” ๋ฌธ์ž์—ด "23"์„ "3"๋ณด๋‹ค ์ž‘๋‹ค๊ณ  ํ‰๊ฐ€ํ•˜๋Š”๋ฐ, ๋ฌธ์ž์—ด ๊ฐ„์— ์„œ๋กœ ๋Œ€์‘ํ•˜๋Š” ๋ฌธ์ž ์ฝ”๋“œ๋ผ๋ฆฌ("2"์™€ "3"์˜ ๋ฌธ์ž ์ฝ”๋“œ) ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€์ˆซ์ž๋ผ๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ์ƒ์‹์ ์ธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

var result = '23' < 3; // false

๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์„ ๋•Œ๋Š” ๋ฌธ์ž์—ด์ด NaN ์ด ๋˜๋Š”๋ฐ, NaN ๊ณผ์˜ ๋น„๊ต๋Š”ํ•ญ์ƒ false ์ด๋‹ค.

var result = 'a ' < 3; // "a"๋Š” NaN์œผ๋กœ ๋ณ€ํ™˜๋˜๋ฏ€๋กœ false

๋™์ผ ์—ฐ์‚ฐ์ž#

๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž, Boolean ๋“ฑ์€ ๋‘ ๊ฐ’์ด ๋™์ผํ•œ์ง€ ์•Œ์•„๋ณด๊ธฐ๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ๊ฐ์ฒด๊ฐ€ ๊ฒฐ๋ถ€๋˜๋ฉด ๋ณต์žกํ•ด์ง„๋‹ค. ECMAScript์—๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒŒ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ, '๋™์ผ'๊ณผ '๋น„๋™์ผ' ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ตํ•˜๊ธฐ ์ „์— ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜๊ณ , '์ผ์น˜'์™€ '๋ถˆ์ผ์น˜' ์—ฐ์‚ฐ์ž๋Š” ํƒ€์ž… ๋ณ€ํ™˜์—†์ด ๋น„๊ตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ •ํ–ˆ๋‹ค.

๋™์ผ๊ณผ ๋น„๋™์ผ#

๋™์ผ ์—ฐ์‚ฐ์ž๋Š” == ์ด๊ณ  ๋น„๋™์ผ ์—ฐ์‚ฐ์ž๋Š” != ์ด๋‹ค. ๋‘ ์—ฐ์‚ฐ์ž ๋ชจ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์ „์— ๋ณ€ํ™˜ํ•œ๋‹ค.

๋ณ€ํ™˜ํ•  ๋•Œ๋Š” ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ Boolean์ผ ๋•Œ๋Š” ์ˆซ์žํ˜• ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ด๊ณ  ํ•˜๋‚˜๊ฐ€ ์ˆซ์ž๋ผ๋ฉด ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š”์ง€ ์‹œ๋„ํ•œ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ฐ์ฒด์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๊ฐ€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ๊ฐ์ฒด์˜ valueOf() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์›์‹œ ๊ฐ’์œผ๋กœ ๋ฐ”๊พผ ํ›„ ์ด์ „ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

๋น„๊ตํ•  ๋•Œ๋Š” ๋‹ค์Œ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

  • null ๊ณผ undefined ๋Š” ๋™์ผํ•˜๋‹ค.

  • null , undefined ๋Š” ๋™์ผ ์—ฌ๋ถ€๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ ๊ฒฐ์ฝ” ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค .

  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ NaN ์ด๋ผ๋ฉด ๋™์ผ ์—ฐ์‚ฐ์ž๋Š” ํ•ญ์ƒ false ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋น„๋™์ผ์—ฐ์‚ฐ์ž๋Š” ํ•ญ์ƒ true ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. NaN ์€ NaN ๊ณผ๋„ ๊ฐ™์ง€ ์•Š๋‹ค.

  • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ๊ฐ์ฒด๋ผ๋ฉด ๊ฐ™์€ ๊ฐ์ฒด์ธ์ง€ ๋น„๊ตํ•œ๋‹ค. ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋ฉด true , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด false ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

โ˜๏ธ ๊ฐ์ฒด๋ผ๋ฆฌ ๋น„๊ตํ•  ๋•Œ๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋น„๊ตํ•œ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

์ผ์น˜์™€ ๋ถˆ์ผ์น˜#

์ผ์น˜/๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” ๋™์ผ/๋น„๋™์ผ ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์€ ์ผ์„ ํ•˜์ง€๋งŒ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋น„๊ตํ•œ๋‹ค. ์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” === ์ด๊ณ , ๋ถˆ์ผ์น˜์—ฐ์‚ฐ์ž๋Š” !== ์ด๋‹ค.

์ผ์น˜/๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ๋ฉด ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๋น„๊ตํ•˜๋ฏ€๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.

3ํ•ญ ์—ฐ์‚ฐ์ž#

3ํ•ญ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด boolean_expression์„ ํ‰๊ฐ€ํ•œ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

variable = boolean_expression ? true_value : false_value;

ํ• ๋‹น ์—ฐ์‚ฐ์ž#

ํ• ๋‹น์€ = ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋‹จ์ˆœํžˆ ๊ฐ’์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค.

var num = 10;

๋˜ํ•œ ์‚ฌ์น™์—ฐ์‚ฐ๊ณผ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž๋ฅผ ๋ณตํ•ฉ ํ• ๋‹น์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฆ„๋‹จ์ถ• ์—ฐ์‚ฐ์ž์˜๋ฏธ
ํ• ๋‹นx = yx = y
๋ง์…ˆ ํ• ๋‹นx += yx = x + y
๋บ„์…ˆ ํ• ๋‹นx -= yx = x - y
๊ณฑ์…ˆ ํ• ๋‹นx *= yx = x * y
๋‚˜๋ˆ—์…ˆ ํ• ๋‹นx /= yx = x / y
๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ ํ• ๋‹นx %= yx = x % y
์ง€์ˆ˜ ์—ฐ์‚ฐ ํ• ๋‹นx **= yx = x ** y
์™ผ์ชฝ ์‹œํ”„ํŠธ ํ• ๋‹นx <<= yx = x << y
์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ํ• ๋‹นx >>= yx = x >> y
๋ถ€ํ˜ธ์—†๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ํ• ๋‹นx >>>= yx = x >>> y
๋น„ํŠธ AND ํ• ๋‹นx &= yx = x & y
๋น„ํŠธ XOR ํ• ๋‹นx ^= yx = x ^ y
๋น„ํŠธ OR ํ• ๋‹นx= yx = xy

์‰ผํ‘œ ์—ฐ์‚ฐ์ž#

์‰ผํ‘œ ์—ฐ์‚ฐ์ž๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์žฅ์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ํ•ฉ์น  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

var num1 = 1,    num2 = 2,    num3 = 3;

์ œ์–ด๋ฌธ#

if ๋ฌธ#

if (condition) statement1 else statement2

do-while ๋ฌธ#

do-while ๋ฌธ์€ ๋ฃจํ”„์˜ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์ „์— ๋ฃจํ”„ ๋ณธ๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค. ์ฆ‰ ๋ฃจํ”„ ๋ณธ๋ฌธ์€ ์ตœ์†Œ ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰๋œ๋‹ค.

do {    statement;} while (expression);

while ๋ฌธ#

while ๋ฌธ์€ ๋ฃจํ”„ ๋ณธ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ข…๋ฃŒ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•œ๋‹ค.

while (expression) statement;

for ๋ฌธ#

for ๋ฌธ ์—ญ์‹œ ๋ฃจํ”„ ๋ณธ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ข…๋ฃŒ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜๋Š”๋ฐ, ๋ฃจํ”„์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ๋ฃจํ”„ ํ›„ ์ฝ”๋“œ๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

for (initialization; expression; post - loop - expression) statement;

for-in ๋ฌธ#

for-in ๋ฌธ์€ ์—„๊ฒฉํ•œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋‚˜์—ดํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

for (property in expression) statement;

for-in ๋ฌธ์€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋ฅผ ๋‚˜์—ดํ•˜๋Š”๋ฐ, ECMAScript์—์„œ๋Š” ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์—์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์–ด๋–ค ์ˆœ์„œ๋กœ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•  ์ง€ ์˜ˆ์ธกํ•˜ ์ˆ˜ ์—†๋‹ค.

๋ฌธ์žฅ ๋ ˆ์ด๋ธ”#

๋ฌธ์žฅ์— ๋ ˆ์ด๋ธ”์„ ๋ถ™์˜€๋‹ค๊ฐ€ ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

label: statement;

๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

start: for (var i = 0; i < count; i++) {    console.log(i);}

์ด ์˜ˆ์ œ์—์„œ ์“ด ๋ ˆ์ด๋ธ” start๋ฅผ ๋‚˜์ค‘์— break๋‚˜ continue ๋ฌธ์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

break ๋ฌธ๊ณผ continue ๋ฌธ#

break ๋ฌธ์€ ์ฆ‰์‹œ ๋ฃจํ”„์—์„œ ๋น ์ ธ๋‚˜๊ฐ€ ๋ฃจํ”„ ๋‹ค์Œ ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•œ๋‹ค. ๋ฐ˜๋ฉด์— continue ๋ฌธ์€ ๋ฃจํ”„๋ฅผ ์ฆ‰์‹œ ๋น ์ ธ๋‚˜๊ฐ€๊ธด ํ•˜์ง€๋งŒ ๋ฃจํ”„ ์‹คํ–‰์€ ๊ณ„์†๋œ๋‹ค.

var num = 0;for (var i = 1; i < 10; i++) {    if (i % 5 == 0) {        break;    }    num++;}console.log(num); // 4
var num = 0;for (var i = 1; i < 10; i++) {    if (i % 5 == 0) {        continue;    }    num++;}console.log(num); // 8

with ๋ฌธ#

with ๋ฌธ์€ ์ฝ”๋“œ์˜ ์Šค์ฝ”ํ”„๋ฅผ ํŠน์ • ๊ฐ์ฒด์— ๊ณ ์ •ํ•œ๋‹ค.

with (expression) statement;

with ๋ฌธ์˜ ์˜๋„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ฝ”๋“œ์—์„œ ์ž์ฃผ ์ฐธ์กฐํ•  ๋•Œ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•จ์ด๋‹ค.

var qs = location.search.substring(1);var hostName = location.hostname;var url = location.href;

์ด ์ฝ”๋“œ์—์„œ location ๊ฐ์ฒด๋ฅผ ๋งค ํ–‰๋งˆ๋‹ค ์ฐธ์กฐํ–ˆ๋Š”๋ฐ with ๋ฌธ์„ ์“ฐ๋ฉด ์œ„ ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ๊ฐ™์ด ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

with (location) {    var qs = search.substring(1);    var hostName = hostname;    var url = href;}

with ๋ฌธ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๋Š” ์šฐ์„  ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ๊ฐ„์ฃผํ•˜๊ณ , ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋•Œ ์ง€์—ญ ๋ณ€์ˆ˜์—์„œ์‹๋ณ„์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด location ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ค‘์—์„œ ํ•ด๋‹น์ด๋ฆ„์„ ์ฐพ๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ์ŠคํŠธ๋ฆญํŠธ ๋ชจ๋“œ์—์„œ๋Š” with ๋ฌธ์„ ๊ธˆ์ง€ํ•˜๋ฉฐ ๋ฌธ๋ฒ• ์—๋Ÿฌ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค. ๋˜ํ•œ with ๋ฌธ์€ ์„ฑ๋Šฅ์— ์•…์˜ํ–ฅ์ด ์žˆ์œผ๋ฉฐ ๋””๋ฒ„๊ทธํ•˜๊ธฐ๋„ ์–ด๋ ค์›Œ ๋ฐฐํฌํ•  ์ตœ์ข… ์ฝ”๋“œ์— with ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค.

switch ๋ฌธ#

switch ๋ฌธ๋„ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์ฐจ์šฉํ•œ ์ œ์–ด๋ฌธ์œผ๋กœ, ๋‹ค๋ฅธ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•๊ณผ ๋น„์Šทํ•˜๋‹ค.

switch (expression) {    case value:        statement;        break;    case value:        statement;        break;    case value:        statement;        break;    case value:        statement;        break;    default:        statement;}

switch ๋ฌธ์˜ ๊ฐ case๋Š” 'ํ‘œํ˜„์‹์ด value์™€ ์ผ์น˜ํ•˜๋ฉด statement๋ฅผ ์‹คํ–‰ํ•˜๋ผ'๋Š” ์˜๋ฏธ์ด๋‹ค. break ํ‚ค์›Œ๋“œ๋ฅผ ์“ฐ์ง€ ์•Š์œผ ๋‹ค์Œ case๋ฅผ ๊ณ„์† ํ‰๊ฐ€ํ•œ๋‹ค. default๋Š” case ์ค‘์— value๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฒƒ์ด ์—†์„ ๋•Œ ์‹คํ–‰ํ•˜๋Š” ๋ฌธ์žฅ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

switch ๋ฌธ์€ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์ฐจ์šฉํ•˜๊ธด ํ–ˆ์ง€๋งŒ ECMAScript๋งŒ์˜ ๊ณ ์œ ํ•œ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ, ๋จผ์ € ECMAScript์˜ switch ๋ฌธ์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๋ฌธ์ž์—ด๊ณผ ๊ฐ์ฒด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๊ฐ’์€ ์ƒ์ˆ˜์ผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋ณ€์ˆ˜๋‚˜ ํ‘œํ˜„์‹๋„ ์“ธ ์ˆ˜ ์žˆ๋‹ค .

switch ('hello world') {    case 'hello' + ' world':        console.log('Greeting was found.');        break;    case 'goodbye':        console.log('Closing was found.');        break;    default:        console.log('Unexpected message was found.');}

์ด ์˜ˆ์ œ์—์„œ๋Š” switch ๋ฌธ์— ๋ฌธ์ž์—ด์„ ์ผ๋‹ค. ์ฒซ ๋ฒˆ์งธ case๋Š” ๋ฌธ์ž์—ด์„ ํ•ฉ์น˜๋Š” ํ‘œํ˜„์‹์ธ๋ฐ, ์ด ๊ฒฐ๊ณผ๊ฐ€ switch ๋ฌธ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•˜๋ฏ€๋กœ "Greeting was found."๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค .

var num = 25;switch (true) {  case num < 0:    console.log("Less than 0.");    break;  case num >= 0 && num <= 10;    console.log("Between 0 and 10.");    break;  case num > 10 && num <= 20;    console.log("Between 10 and 20.");    break;  default:    console.log("More than 20.");}

์ด ์ฝ”๋“œ์—์„œ num์€ switch ๋ฌธ ๋ฐ–์—์„œ ์ •์˜๋˜์—ˆ๊ณ , ๊ฐ case ๋ฌธ์€ Boolean ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ switch ๋ฌธ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ true์™€ ๋น„๊ตํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•œ๋‹ค.

ํ•จ์ˆ˜#

ECMAScript์—์„œ ํ•จ์ˆ˜๋Š” function ํ‚ค์›Œ๋“œ๋กœ ์ •์˜ํ•˜๋ฉฐ ๊ทธ ๋’ค์— ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ์ˆœ์„œ๋Œ€๋กœ ์“ด๋‹ค.

function functionName(arg0, arg1, ..., argN) {  statements}

ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉฐ, ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธธ ๋• ๊ด„ํ˜ธ์•ˆ์— ๋„ฃ๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ๋ชจ๋“  ํ•จ์ˆ˜๋Š” return ๋ฌธ ๋’ค์— ๋ฐ˜ํ™˜ํ•  ๊ฐ’์„ ์จ์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ชจ๋“  ํ•จ์ˆ˜๊ฐ€ ๊ผญ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋Š” return ๋ฌธ์„ ๋งŒ๋‚˜๋ฉด ์ฆ‰์‹œ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ณ  ๋น ์ ธ๋‚˜์˜ค๋ฏ€๋กœ return ๋ฌธ ๋’ค์˜ ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

ํ•จ์ˆ˜ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ return ๋ฌธ์„ ์“ธ ์ˆ˜๋„ ์žˆ๊ณ , return ๋ฌธ ๋’ค์— ๋ฐ˜ํ™˜ ๊ฐ’์„ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด undefined ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ดํ•ด#

ECMAScript ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆซ์ž๋ฅผ ๋”ฐ์ง€์ง€ ์•Š์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ์ฒดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ํ•จ์ˆ˜์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‘ ๊ฐœ ๋ฐ›๋„๋ก ๋งŒ๋“ค์–ด๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•œ ๊ฐœ, ์„ธ ๊ฐœ ๋˜๋Š” ์•„์˜ˆ๋„˜๊ธฐ์ง€ ์•Š์•„๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋Š” ์ด์œ ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ๋ฐฐ์—ด์œผ๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์— ์–ด๋–ค ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š”์ง€ ์ฒดํฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ๋นˆ๋ฐฐ์—ด์ด ๋“ค์–ด์™€๋„ ์ƒ๊ด€ ์—†๊ณ  ๋” ๋งŽ์ด ๋“ค์–ด์™€๋„ ๊ดœ์ฐฎ๋‹ค. ํ•จ์ˆ˜๋Š” arguments ๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ๊ฐ–๋Š”๋ฐ, ์ด ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

arguments[0] ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ , arguments[1] ๋กœ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋Š” length ํ”„๋กœํผํ‹ฐ๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค. arguments ์˜ ๋™์ž‘์ด ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ Array ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค. (์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด) arguments ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ช…์‹œ์ ์ธ ์ด๋ฆ„์„ ์ •ํ•˜์ง€ ์•Š๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค.

function sayHi() {    console.log('Hello ' + arguments[0] + ',' + arguments[1]);}

arguments ๊ฐ์ฒด์˜ length ํ”„๋กœํผํ‹ฐ๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ ์ „๋‹ฌ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜์žˆ๊ณ , ์ด๋ฅผ ํ™œ์šฉํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋ฐ˜์‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

function doAdd() {    if (arguments.length == 1) {        console.log(arguments[0] + 10);    } else if (arguments.length == 2) {        console.log(arguments[0] + arguments[1]);    }}

arguments ๊ฐ์ฒด๋ฅผ ์ด๋ฆ„ ๋ถ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์“ธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ arguments[0] ์€ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๊ฐ’์ด๊ณ , arguments[1] ๋Š” ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋‘˜์„ ๋ฐ”๊ฟ”์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. arguments ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ ์ด์— ๋Œ€์‘ํ•˜๋Š”์ด๋ฆ„ ๋ถ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ์ž๋™์œผ๋กœ ๋ฐ˜์˜๋œ๋‹ค.

function doAdd(num1, num2) {    arguments[1] = 10;    console.log(arguments[0] + num2);}

์ด ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ 10์œผ๋กœ ๋ฐ”๊พธ๋Š”๋ฐ ์ด ๋•Œ ์ด๋ฆ„ ๋ถ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜ num2 ์—ญ์‹œ arguments[1] ์— ๋”ฐ๋ผ 10์ด ๋œ๋‹ค. ์ด ๋‘˜์ด ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์“ฐ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๊ฒƒ์€ ๋™๊ธฐํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹จ๋ฐ˜ํ–ฅ ๋ฐ˜์˜์œผ๋กœ arguments[1] ์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด num2 ์— ๋ฐ˜์˜๋˜์ง€๋งŒ num2 ๋ฅผ ๋ฐ”๊พธ๋ฉด arguments[1] ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค.

์˜ค๋ฒ„๋กœ๋”ฉ#

ECMAScript ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ์ด ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Java์—์„œ๋Š”ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™๋”๋ผ๋„ ์‹œ๊ทธ๋‹ˆ์ฒ˜(๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…๊ณผ ๊ฐœ์ˆ˜)๋งŒ ๋‹ค๋ฅด๋ฉด ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, JavaScript์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ทธ์ € ๋ฐฐ์—ด์ผ ๋ฟ์ด๋ฉฐ ๊ทธ ๊ฐ’์—์ œํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์—†๋‹ค.

๋”ฐ๋ผ์„œ ECMAScript์—์„œ๋Š” ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ •์˜ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ํ•จ์ˆ˜๊ฐ€ ํ•ด๋‹น์ด๋ฆ„์„ ์†Œ์œ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ง„์ •ํ•œ ์˜๋ฏธ์˜ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ํ•จ์ˆ˜์— ๋„˜๊ธด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…๊ณผ ์ˆซ์ž๋ฅผ ์ฒดํฌํ•ด์„œ ๊ทธ์— ๋งž๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ‰๋‚ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์š”์•ฝ#

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ECMA-262์—์„œ ECMAScript๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ€์ƒ ์–ธ์–ด๋กœ ์ •์˜ํ–ˆ๋‹ค. ECMAScript์—๋Š” ์ž…์ถœ๋ ฅ์„ ์ œ์™ธํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•๊ณผ ์—ฐ์‚ฐ์ž, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๊ฐ์ฒด๋“ฑ์„ ์ •์˜ํ–ˆ๋‹ค. ECMAScript์˜ ๊ธฐ๋ณธ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ECMAScript์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ Undefined, Null, Boolean, Number, String ์ด๋‹ค.

  • ECMAScript๋Š” ์ •์ˆ˜์™€ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ECMAScript๋Š” C ๋ฐ C์™€ ๋น„์Šทํ•œ ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž์ธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž, ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž, ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž, ๋™์ผ(์ผ์น˜) ์—ฐ์‚ฐ์ž, ํ• ๋‹น ์—ฐ์‚ฐ์ž ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

  • JavaScript์˜ ์ œ์–ด๋ฌธ์€ ๋Œ€๊ฐœ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์ฐจ์šฉํ•œ ๊ฒƒ์ด๋ฉฐ if ๋ฌธ, for ๋ฌธ, switch ๋ฌธ ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•œ๋‹ค.

ECMAScript์˜ ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์˜ ํ•จ์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

  • ํ•จ์ˆ˜๋Š” ์–ธ์ œ๋“  ๋ฌด์Šจ ๊ฐ’์ด๋“  ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ช…์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋Š” undefined ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ECMAScript์˜ ํ•จ์ˆ˜๋Š” ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์—†๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์‹ค ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์ด๋ฉฐ ์–ด๋–ค๊ฐ’์ด๋“  ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • ํ•จ์ˆ˜์— ๋„˜๊ธฐ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆซ์ž์—๋Š” ์ œํ•œ์ด ์—†์œผ๋ฉฐ arguments ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ• ์ˆ˜์žˆ๋‹ค.

  • ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ECMAScript์˜ ํ•จ์ˆ˜๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜์™€ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ฌ๋ฆฌ ๋™์ž‘ํ•˜๋„๋ก ์ •์˜ํ•ด์„œ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ‰๋‚ด๋‚ผ ์ˆ˜๋Š” ์žˆ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ#

๐Ÿ”— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ์„ธ๋ฏธ์ฝœ๋ก ์„ ์จ์•ผ ํ•˜๋‚˜ ๋ง์•„์•ผ ํ•˜๋‚˜ | ๋ฐ•์—ฐ์˜ค

๐Ÿ”— JavaScript Reserved Words

๐Ÿ”— Symbol | PoiemaWeb

๐Ÿ”— typeof

๐Ÿ”— FEDevelopers/tech.description

๐Ÿ”— Type Checking | PoiemaWeb

๐Ÿ”— ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž