๐ŸŸจ JavaScript/์ •๋ฆฌ

    JavaScript ์ •๋ฆฌ : this (2) ํ™”์‚ดํ‘œํ•จ์ˆ˜์—์„œ์˜ this

    ์—ฌ๊ธฐ์„œ ์ž ๊น๐Ÿ”” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ํŠน์ง• ์ƒ์„ฑ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ์Šค์Šค๋กœ์˜ this, argument๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Œ returnํ•˜์ง€ ์•Š์•„๋„ ๊ฐ’์ด ๋ฐ˜ํ™˜๋จ (๋ณธ๋ฌธ์ด ์—ฌ๋Ÿฌ ์ค„๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ๋Š” ์ œ์™ธ) ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ this๋Š”? this = ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋œ ์Šค์ฝ”ํ”„์˜ this๋ฅผ ๊ฐ€๋ฆฌํ‚ด (์ƒ์„ฑ๋  ๋•Œ this๊ฐ€ ๊ฒฐ์ •๋˜๋ฉฐ, ํ™”์‚ดํ‘œํ•จ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ/ํ˜ธ์ถœ๋˜๋“  this๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.) const obj = { name: '์ฒ ์ˆ˜', sayName: function() { const innerMethod = () => { return `${this.name}, ์•ˆ๋…•!`; }; console.log(innerMethod()); } }; obj.sayName(); // ์ฒ ์ˆ˜, ์•ˆ๋…•! → ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ์ •์˜ํ•˜์ง€..

    JavaScript ์ •๋ฆฌ : this (1) ์ƒํ™ฉ๋ณ„ this

    JavaScript์—์„œ this๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋Š” ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ํ˜ธ์ถœ๋  ๋•Œ ๊ฒฐ์ •๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ this๊ฐ€ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. (ํ™”์‚ดํ‘œํ•จ์ˆ˜์—์„œ์˜ this๋Š” ๋‹ค์Œ ๊ธ€์—์„œ ์ •๋ฆฌํ•œ๋‹ค.) ๋ชฉ์ฐจ ์ „์—ญ ์ปจํ…์ŠคํŠธ (Global scope) & ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ฐ์ฒด์— ์†ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๊ฐ์ฒด์— ์†ํ•œ ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ถ€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ•จ์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ๋กœ ํ˜ธ์ถœ (call, apply, bind) ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ํ˜ธ์ถœ ํด๋ž˜์Šค ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ "use strict" ๋ชจ๋“œ 1. ์ „์—ญ ์ปจํ…์ŠคํŠธ (Global scope) & ํ•จ์ˆ˜ ํ˜ธ์ถœ this = ์ „์—ญ ๊ฐ์ฒด (๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” window) console.log(this); // ์ „์—ญ ๊ฐ์ฒด (๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” window) function myFunction() { co..