[JavaScript] ์ฐธ์กฐ์— ์˜ํ•œ ๊ฐ์ฒด ๋ณต์‚ฌ
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
์ฐธ์กฐ์— ์˜ํ•œ ๊ฐ์ฒด๋ณต์‚ฌ ๊ฐ์ฒด์™€ ์›์‹œํƒ€์ž…์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ์ฒด๋Š” '์ฐธ์กฐ์— ์˜ํ•ด(by reference)' ์ €์žฅ๋˜๊ณ  ๋ณต์‚ฌ๋œ๋‹ค. ์›์‹œ๊ฐ’(๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฐ ๊ฐ’)์€ '๊ฐ’ ๊ทธ๋Œ€๋กœ' ์ €์žฅ·ํ• ๋‹น๋˜๊ณ  ๋ณต์‚ฌ๋œ๋‹ค. let message = 'Hello'; let cloneMessage = message; cloneMessage = 'CloneHello'; console.log(message, cloneMessage); // Hello CloneHello ๊ฐ์ฒด๊ฐ€ ํ• ๋‹น๋œ ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ๋™์ผํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฐ’์ด ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์ง„๋‹ค. let user = { name: 'John'; } let admin = user; admin.name = ..
[JavaScript] ๊ฐ์ฒด
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
์ƒ์ˆ˜๊ฐ์ฒด const๋กœ ์„ ์–ธ๋œ ๊ฐ์ฒด๋Š” ์ˆ˜์ • ๋  ์ˆ˜ ์žˆ๋‹ค. const user = { name: 'John' }; user.name = 'Pete'; console.log(user.name); // Pete const๋Š” ํ•œ ๋ฒˆ์ด๋ผ๋„ ๊ฐ’์„ ํ• ๋‹นํ•œ ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฑธ ๋ง‰๋Š”๋‹ค. ๋ณ€์ˆ˜ user๋Š” ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, const๋Š” ์ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š”๊ฑธ ๋ง‰๋Š” ๊ฒƒ์ด์ง€, ๊ฐ์ฒด์˜ ๋‚ด์šฉ (ํ”„๋กœํผํ‹ฐ)์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฑด ๋ง‰์ง€์•Š๋Š”๋‹ค. ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์•ˆ์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ์„ ๊ฒฝ์šฐ, ์ด๋ฅผ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ (computed propery) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. let fruit = prompt('์–ด๋–ค ๊ณผ์ผ์„ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?', 'appl..
[JavaScript] nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
nullish ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž ?? ์ตœ๊ทผ์— ์ถ”๊ฐ€๋จ. ์ŠคํŽ™์— ์ถ”๊ฐ€๋œ์ง€ ์–ผ๋งˆ์•ˆ๋œ ๋ฌธ๋ฒ•. ๊ตฌ์‹ ๋ธŒ๋ผ์šฐ์ €๋Š” ํด๋ฆฌํ•„์ด ํ•„์š”ํ•˜๋‹ค. nullsh ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž(nullish coalescing operator) ??๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์งง์€ ๋ฌธ๋ฒ•์œผ๋กœ ์—ฌ๋Ÿฌ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ๊ทธ ๊ฐ’์ด ํ™•์ •๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. a ?? b ์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. a๊ฐ€ null๋„ ์•„๋‹ˆ๊ณ  undefined๋„ ์•„๋‹ˆ๋ฉด a ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ b nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??์—†์ด x = a ?? b์™€ ๋™์ผํ•œ ๋™์ž‘์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. x = (a !== null && a !== undefined) ? a : b; ??์™€ ||์˜ ์ฐจ์ด ||๋Š” ์ฒซ ๋ฒˆ์งธ truthy๊ฐ’์„ ๋ฐ˜ํ™˜. ??๋Š” ์ฒซ ๋ฒˆ์งธ ์ •์˜๋œ(defined) ๊ฐ’์„ ๋ฐ˜ํ™˜. null๊ณผ un..
[JavaScript] return์ด ํ•˜๋Š” ์ผ
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์•„๋Š”๋ฐ ์‚ฌ์šฉ. ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ•จ์ˆ˜๋ฅผ ์ค‘์ง€(escape). 1. ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ + 2. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์•„๋Š”๋ฐ ์‚ฌ์šฉ. [์˜ˆ์ œ1] var test = function() { var x = 1; } test(); console.log(test()); // undefined ์œ„์˜ ํ•จ์ˆ˜๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ๋‚ด๋ถ€ ๊ตฌ๋ฌธ๋“ค์„ ์‹คํ–‰(test())ํ•˜์˜€์œผ๋‚˜ ๋ฐ˜ํ™˜ํ•  ๊ฐ’์ด ์„ ์–ธ๋˜์ง€ ์•Š์•˜๋‹ค. x๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„  return์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. var test = function() { var x = 1; return x; } var test2 = test(); console.log(test2); test() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ํ•ด๋‹นํ•จ์ˆ˜๋Š” 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ..
[JS] script async/defer
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
*parsing :: https://solog4something.tistory.com/13 (+)21.10.26 ์ถ”๊ฐ€ ํŒŒ์‹ฑ์€ ํ•ด๋‹น ์–ธ์–ด์˜ ๋ฌธ๋ฒ•๊ฒ€์‚ฌ๊ธฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋กœ ๋ฐ›์€ HTML๊ณผ CSS ํŒŒ์ผ์„ ํ† ํฐํ™” ์‹œํ‚ค๊ณ  Parse Tree๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด Parse Tree๋ฅผ DOM ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด ๋ Œ๋”ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ HTML์„ ํ™”๋ฉด์— ๋ณด์ด๊ธฐ ์œ„ํ•ด ํŒŒ์‹ฑํ•˜๋Š” ๋„์ค‘์— ํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณด์ž. script ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” *parser blocking resource(ํŒŒ์„œ ์ฐจ๋‹จ ๋ฆฌ์†Œ์Šค)์ด๋‹ค. ๊ธฐ๋ณธ ๋ชจ๋“œ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•ด ์ฝ๋‹ค๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋‚˜๋ฉด ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๊ณ , ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด > ํŒŒ์‹ฑ > ์‹คํ–‰ ํ•œ ํ›„ ๋‹ค์‹œ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ฒŒ ๋œ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ..
[JavaScript / ES6] let, const์™€ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
ES5๊นŒ์ง€ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€๋Š” ๋‹ค๋ฅธ ํŠน์ง•์œผ๋กœ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š์œผ๋ฉด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค. ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„(Function-level Scope) ํ•จ์ˆ˜์˜ ์ฝ”๋“œ ๋ธ”๋ก๋งŒ ์Šค์ฝ”ํ”„ ์ธ์ •. ๋”ฐ๋ผ์„œ ์ „์—ญ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•œ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์ „์—ญ ๋ณ€์ˆ˜์ด๋‹ค. ์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋‚จ๋ฐœํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ธ๋‹ค. for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ์™ธ๋ถ€์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. var ํ‚ค์›Œ๋“œ ์ƒ๋žต ํ—ˆ์šฉ ์•”๋ฌต์  ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋‚จ๋ฐœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค. ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ํ—ˆ์šฉ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๊ฐ’์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜ ํ˜ผ๋ž€์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์ด์ „์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ES6๋Š” ์ด๋Ÿฌํ•œ var ํ‚ค์›Œ๋“œ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด let..
[JavaScript] Call By Value
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ•ญ์ƒ ํ—ท๊ฐˆ๋ฆฐ ๋ถ€๋ถ„์ด๋‹ค๐Ÿ˜ฐ ์ด๋ฒˆ์—” ํ™•์‹คํžˆ ๋‹ค์ง€๊ณ  ๋„˜์–ด๊ฐ€์ž ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. Call By value ์™€ Call By Reference ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ• ๊นŒ? ๋ฐ”๋กœ Call By Value์ด๋‹ค. ํ”ํžˆ๋“ค ์ž˜๋ชป ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ์‹ค์ด ํ•œ๊ฐ€์ง€ ์žˆ๋‹ค. ๋ฐ”๋กœ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์›์‹œํƒ€์ž…(Primitive Type)์ธ ๊ฒฝ์šฐ์—๋Š” Call By value์ด๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ฐ์ฒดํ˜•ํƒœ๋ฉด Call By Reference ๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์™„์ „ํžˆ ์ž˜๋ชป๋œ ์‚ฌ์‹ค์ด๋‹ค.(๋‚˜๋„ ์ด๋ ‡๊ฒŒ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค..) Call By Value argument๋กœ value(๊ฐ’)์ด ๋„˜์–ด์˜จ๋‹ค. ์ด๋•Œ ๋„˜์–ด์˜ฌ ๋•Œ๋Š” "๋ณต์‚ฌ๋œ ๊ฐ’"์ด ๋„˜์–ด์˜จ๋‹ค. cal..
[JavaScript] JavaScript ์‚ฝ์ž…๋ฐฉ์‹๊ณผ ์œ„์น˜
ยท
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž…๋ฐฉ์‹๊ณผ ์œ„์น˜ 1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž…๋ฐฉ์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌธ์„œ ์•ˆ์— type="text/javascript" ๋ถ€๋ถ„์€ HTML5์—์„œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ. ๋ฌธ์„œ์˜ ์–ด๋А ๊ณณ์ด๋“  ์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์น˜์— ์ œํ•œ์„ ๋‘์ง€ ์•Š๋Š”๋‹ค. 1๋ฒˆ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ :: ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ์ด๊ฑฐ๋‚˜ ํ•ด๋‹น ๋ฌธ์„œ์—๋งŒ ์ ์šฉ๋˜๋Š” ์ฝ”๋“œ๋“ค, ์ดˆ๊ธฐํ™” ๋“ฑ์— ์ž์ฃผ ์‚ฌ์šฉ. 2๋ฒˆ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ :: ๋ฐ˜๋ณต์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋“ค์„ ํŒŒ์ผ๋ณ„๋กœ ์ €์žฅํ•ด๋‘๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์‚ฌ์šฉ. ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์‹คํ–‰์ˆœ์„œ, ์˜์กด์„ฑ๋“ค์„ ํ™•์ธํ•˜๊ธฐ์— ์ˆ˜์›”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ฒœ๋˜๋Š” ๋ฐฉ์‹. 2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž… ์œ„์น˜ ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์˜ ๊ตฌ์กฐ์™€ CSS ์Šคํƒ€์ผ์„ ๋ Œ๋”๋งํ•˜๋Š” ๋„์ค‘ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์ด์— ๋Œ€ํ•œ ํ•ด์„๊ณผ ๊ตฌํ˜„์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์„ ๋ฉˆ์ถ”๊ฒŒ ๋œ๋‹ค. ์ฆ‰..