var App = App || {} ๋ถ๋ถ์ let์ผ๋ก ์ ์ธํ๋ฉด ์๋ฌ๊ฐ ๋๋๋ฐ, ํน์ ์ด์ ๋ฅผ ์ฌ์ญค๋ด๋ ๋ ๊น์?
์ค๋๋ ์ง๋ฌธ์ด์ง๋ง, ํน์ ๋์์ด ๋๋ ๋ถ์ด ์์๊นํด์ ๋ต๊ธ์ ๋ต๋๋ค. ์์ ๋ ์ค๋ฅธ์ชฝ์ ์๋ ๋ณ์๋ฅผ ์ผ์ชฝ var ์ ์ธ๋ ๋ณ์์ ํ ๋นํ๋ ๊ตฌ์กฐ์
๋๋ค. ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํด์๋, App์ด๋ผ๋ ๋ณ์๊ฐ ์ด๋ฏธ ์ ์ธ๋ผ์์ด์ผ ํฉ๋๋ค. ์ด ๋ถ๋ถ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ด๋ถ์ ์ผ๋ก ํธ์ด์คํ
์ด๋ผ๋ ์์
์ ํ๊ฒ๋๋๋ฐ, App ์ด๋ผ๋ ๋ณ์๋ฅผ ๋จผ์ ์ ์ธํ์ง ์์์์๋, ๋ด๋ถ์ ์ผ๋ก var App; ์ด๋ผ๋ ์ ์ธ ํ์ ํด๋น ๋ณ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํธ์ด์คํ
์ ์ํ ์ ์์ ๋ฅผ ํ์ด์ฐ๋ฉด var App; var App = App || {}; ์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ ์ธ๋ App์ ๊ฐ์ด undefined ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ์กฐ๊ฑด์ธ ๋น ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ํ ๋น๋ฐ๊ฒ ๋ฉ๋๋ค. (์๋ฐ์คํฌ๋ฆฝํธ์์ undefined๋ false ๋ก ์ทจ๊ธ๋๊ณ , '||' ๋ true ๊ฐ ๋ง์ ๋ฐํํฉ๋๋ค) ๋ค๋ง let๊ณผ const๋ ํด๋น ํธ์ด์คํ
์์
์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ณ์๋ช
์ ์ฌ์ ์ธ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ let์ผ๋ก ์ ์ธํ๋ฉด Cannot access 'App' before initialization ๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. (์์๋๊ฒ์ฒ๋ผ ๊ธธ๊ฒ ์จ๋จ์ง๋ง, ์ ๋ ๋ฐฐ์ด์ง ์ผ๋ง์๋๋ ์ด์ฌ์๋ผ ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค ๐
๋ง์ฝ ํ๋ฆฐ ๋ด์ฉ์ด ์๋ค๋ฉด ์ง์ ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค)