-
[JavaScript/ES6] let ๊ณผ this ํค์๋javascript 2019. 4. 29. 22:51
์๋ ํ์ธ์, Jerry์ ๋๋ค.
ECMAScript 6(์ ์: ๊น์๋ณด)๋ฅผ ๊ณ์ ์ฝ๊ณ ์์ต๋๋ค. ์ ๋ฒ ES6 ํฌ์คํ ์์ let๊ณผ var์ ์ฐจ์ด์ ์ ๋ํด ์ด์ผ๊ธฐ๋ฅผ ๋๋ด์๋๋ฐ์. ํน์ let๊ณผ var์ ์ฐจ์ด์ ํฌ์คํ ์ ๋ชป ๋ณด์ ๋ถ๋ค ์ค์ ๊ถ๊ธํ์ ๋ถ๋ค์ โผ์ฌ๊ธฐ ์๋ ๋งํฌ๋ก ์ ์ํด๋ณด์ธ์ :)
·let ํค์๋์ var ํค์๋์ ์ฐจ์ด์ โ https://bejerry.tistory.com/7)
์ด๋ฒ ํฌ์คํ ์์ this ํค์๋๋ฅผ ๋ค๋ค๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ณธ ํฌ์คํ ์ ECMAScript 6(์ ์: ๊น์๋ณด)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ช ์ ๋๋ฆฌ๋ฉฐ, ์์ ์์ค๋ ๋น์ทํ ์ ์๋ด๋๋ฆฌ๊ณ ํฌ์คํ ์์ํ๊ฒ ์ต๋๋ค.
๋ธ๋ก ์ค์ฝํ์์ this ํค์๋๊ฐ ์ฐธ์กฐํ๋ ์ค๋ธ์ ํธ๋ฅผ ํ ๋ฒ ๋ณด์ค๊น์?
let - this
var music = '์์ '; console.log(this.music); // ์์ let sports = '์ถ๊ตฌ'; console.log(this.sports); // undefined
ํ์ฌ ์ค์ฝํ๋ ๊ธ๋ก๋ฒ ์ค๋ธ์ ํธ์ด๊ณ this๊ฐ ๊ธ๋ก๋ฒ ์ค๋ธ์ ํธ๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ๊ธ๋ก๋ฒ ์ค๋ธ์ ํธ๊ฐ window ์ค๋ธ์ ํธ๋ ์๋์ง๋ง, window ์ค๋ธ์ ํธ๋ก ๊ธ๋ก๋ฒ ๋ณ์์ ์ ๊ทผ์ ๊ฐ๋ฅํฉ๋๋ค.
let ํค์๋๋ก sports ๋ณ์๋ฅผ ์ ์ธํ๊ณ '์ถ๊ตฌ'๋ผ๋ ๊ฐ์ ํ ๋นํ๊ณ this.sports๋ก ์ถ๋ ฅ์ ํ๋ฉด undefined๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. ์ var ํค์๋์ ๋ค๋ฅด๊ฒ ์ถ๋ ฅ์ด ๋๋๊ฑธ๊น์? ์ค์ฝํ์ ์ฐจ์ด์ ์ด ์๋ค๊ณ ๋ ํ๋, ํ์ฌ ์์ ์ ์ค์ฝํ๋ก ์ฐจ์ด์ ์ ์ค๋ช ํ๋ ๊ฑด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค๋ฅด๊ฒ ์ถ๋ ฅ๋๋ ์ด์ ๋ ๋ฐ๋ก ์ด์ด์ ์ ๊ฒ ์ต๋๋ค.
๊ทธ ์ด์ ๋ this๊ฐ window ์ค๋ธ์ ํธ๋ฅผ ์ฐธ์กฐํ๋๋ฐ window ์ค๋ธ์ ํธ์์ let ๋ณ์๊ฐ ์ค์ ๋์ง ์๋๋ค๋ ์๋ฏธ๊ฐ ๋ฉ๋๋ค. ์ด ์ ์ด var ๋ณ์์ let ๋ณ์์ ์ฐจ์ด์ ๋๋ค.
์ฌ์ค ์ฑ ์ ์ด๋ ๊ฒ ์ ํ์์์ง๋ง ์ ๋ ์ดํด๋ฅผ ํ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋์ ์ฃผ์์ ๋ฌผ์ด๋ดค๋๋ฐ ์ดํดํ๋๋ฐ ๋์์ ์ค ์น๊ตฌ๊ฐ ์์ด์ ๊ทธ ๋ต๋ณ์ ๊ณต์ ํด๋ณผ๊น ํฉ๋๋ค.
var ํค์๋์ ๊ฒฝ์ฐ scope๊ฐ window๊น์ง ๊ฐ๋๊ฑฐ๋ผ๊ณ ํ๋ฉด, let์ scope๋ window์ ๋ฏธ์น์ง ๋ชปํ๋ค.
์ด ๋ง์ด ์ ๋ต์ ์๋๊ฒ ๋ค๋ง, ์ดํดํ๋๋ฐ์๋ ๋ถ๋ช ๋์์ด ๋์ด์ ๊ณต์ ํ ๊ฒ์ด๋ ํน์ ์์ธํ ์ค๋ช ํด์ฃผ์ค ์ ์๋ ๋ถ์ ๋๊ธ๋ก ์์ธํ ์ค๋ช ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค.
+์ถ๊ฐ
this๋ ๋ธ๋ผ์ฐ์ ์์ window ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉ ๋๊ณ , var ํค์๋๋ window ๊ฐ์ฒด์ ์ค์ฝํ๋ฅผ ์์ฑํ๋ ๋ฐ๋ฉด,
let ํค์๋๋ window ๊ฐ์ฒด์ ์ค์ฝํ๋ฅผ ์์ฑํ์ง ์์ผ๋ฏ๋ก ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค.
'javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ