๐Ÿ“Œ DeepDive/JavaScript

๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๊ฐ’์˜ ์ข…๋ฅ˜.ES6์€ 7๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค.์›์‹œ ํƒ€์ž…(primitive type)numberstringbooleanundefinednullsymbol: ES6์—์„œ ๋„์ž…๊ฐ์ฒด ํƒ€์ž…(object/reference type)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํƒ€์ž…์„ ๊ตฌ๋ณ„ํ•ด์„œ ๊ฐ’์„ ์ทจ๊ธ‰ํ•œ๋‹ค. 6.1 ์ˆซ์ž ํƒ€์ž…์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ •์ˆ˜์™€ ์‹ค์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ์ˆซ์ž ํƒ€์ž…๋งŒ ์กด์žฌํ•œ๋‹ค.ECMAScript ์‚ฌ์–‘์— ๋”ฐ๋ฅด๋ฉด, ์ˆซ์ž ํƒ€์ž…์˜ ๊ฐ’์€ ๋ฐฐ์ •๋ฐ€๋„ 64๋น„ํŠธ ๋ถ€๋™์†Œ์ˆ˜์  ํ˜•์‹์„ ๋”ฐ๋ฅธ๋‹ค.์ฆ‰, ๋ชจ๋“  ์ˆ˜๋ฅผ ์‹ค์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  integer type์ด ๋ณ„๋„๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” 2์ง„์ˆ˜, 8์ง„์ˆ˜, 16์ง„์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋“ค ๊ฐ’์„ ์ฐธ์กฐํ•˜๋ฉด ๋ชจ๋‘ 10์ง„์ˆ˜๋กœ ํ•ด์„๋œ๋‹ค.var binary ..
5.1 ๊ฐ’ (value)๊ฐ’(value): ํ‘œํ˜„์‹(expression)์ด ํ‰๊ฐ€(evaluate) ๋˜์–ด ์ƒ์„ฑ๋œ ๊ฒฐ๊ณผ๋ชจ๋“  ๊ฐ’์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์ง€๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ์— 2์ง„์ˆ˜, ๋น„ํŠธ์˜ ๋‚˜์—ด๋กœ ์ €์žฅ๋œ๋‹ค.๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๊ฐ’์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„๋œ๋‹ค.0100 0001์€ ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ์ˆซ์ž๋กœ๋Š” 65, ๋ฌธ์ž๋กœ๋Š” 'A'๋ณ€์ˆ˜์—๋Š” 'ํ•˜๋‚˜์˜ ๊ฐ’'์„ ์ €์žฅํ•œ๋‹ค.๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์€ ๋ฆฌํ„ฐ๋Ÿด์ด๋‹ค. 5.2 ๋ฆฌํ„ฐ๋Ÿด (literal)๋ฆฌํ„ฐ๋Ÿด(literal): ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž ๋˜๋Š” ์•ฝ์†๋œ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•(notation)3;์œ„ ์˜ˆ์ œ์˜ 3์€ ๋‹จ์ˆœ ์•„๋ผ๋น„์•„ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด์ด๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋Ÿฐํƒ€์ž„์— ๋ฆฌํ„ฐ๋Ÿด์„ ํ‰๊ฐ€ํ•ด ๊ฐ’์„ ์ƒ์„ฑํ•œ๋‹ค.๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ data ..
4.1 ๋ณ€์ˆ˜์˜ ๊ฐœ๋…๊ณผ ํ•„์š”์„ฑ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด, ํ”ผ์—ฐ์‚ฐ์ž(operand) ๊ธฐ์–ตํ•ด์•ผ ํ•จ.์ปดํ“จํ„ฐ๋Š” CPU๋ฅผ ์‚ฌ์šฉํ•ด ์—ฐ์‚ฐํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•จ.๋ฉ”๋ชจ๋ฆฌ(memory):๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€(memory cell)์˜ ์ง‘ํ•ฉ์ฒด๋ฉ”๋ชจ๋ฆฌ ์…€ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๋Š” 1๋ฐ”์ดํŠธ(8๋น„ํŠธ)์ด๋ฉฐ, ์ปดํ“จํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€์˜ ํฌ๊ธฐ(1๋ฐ”์ดํŠธ) ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ write/read๊ฐ ์…€์€ ๊ณ ์œ ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ(memory address)๋ฅผ ๊ฐ€์ง.๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ 2์ง„์ˆ˜๋กœ ์ €์žฅ๋จ.์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์˜ ์œ„ํ—˜์„ฑ:์‹ค์ˆ˜๋กœ ์šด์˜์ฒด์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์‹œ์Šคํ…œ์„ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๋Š” ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.-> ๋”ฐ๋ผ์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.๋˜ํ•œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ..
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์™€ Node.js๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”์–ด์ธ ECMAScript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์™€ Node.js์—์„œ ECMAScript ์ด์™ธ์— ์ถ”๊ฐ€๋กœ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์€ ์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ. ๋ธŒ๋ผ์šฐ์ €๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์ด ์ฃผ ๋ชฉ์ ์ด์ง€๋งŒ, Node.js๋Š” ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ฃผ ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ.๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์ง€์›ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ Web API(Client-side APIs)ex: DOM API (ํŒŒ์‹ฑ๋œ HTML ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘)Node.js์—์„œ๋งŒ ์ง€์›ํ•˜๋Š” Node.js Host APIsex: ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ API๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์˜ ..
2.1 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํƒ„์ƒ1995๋…„, 90%์˜ ์‹œ์žฅ ์ ์œ ์œจ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ € ์‹œ์žฅ์„ ์ง€๋ฐฐํ•˜๋˜ ๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ.Brendan Eich๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ.Mocha -> LiveScript -> JavaScript ๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€œ.2.2 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€ํ™”1996๋…„ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ JScript๋ผ๋Š” ํŒŒ์ƒ ๋ฒ„์ „์„ ์ถœ์‹œํ•จ.๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ์™€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ์ž์‚ฌ ๋ธŒ๋ผ์šฐ์ €์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ž์‚ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•จ.-> ์ตœ์ดˆ์˜ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ๋Š” ECMA ์ธํ„ฐ๋‚ด์…”๋„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€ํ™”๋ฅผ ์š”์ฒญํ•จ.1997๋…„, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ECMAScript๋กœ ๋ช…๋ช…๋จ. (์ดˆํŒ, ES1)2015๋…„์— ๊ณต๊ฐœ๋œ ECMAScript 6(ECMAScript 20..
yesolz
'๐Ÿ“Œ DeepDive/JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก