โ
const address = "Yongsan-gu, Seoul";
const๋ก ์ ์ธํ ๋ณ์๋ฅผ '์์(constant)'๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ
์ฌํ ๋นํ ์ ์์ผ๋ฏ๋ก ์์๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๋ณ์๋ฅผ ๋ณ์นญ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ด๋ฐ ์์๋ ๋๋ฌธ์์ ๋ฐ์ค๋ก ๊ตฌ์ฑ๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ค.
โ
const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";
// ์์์ ๊ณ ๋ฅด๊ณ ์ถ์ ๋ ๋ณ์นญ์ ์ฌ์ฉ
let color = COLOR_ORANGE;
alert(color); // #FF7F00
๋๋ฌธ์๋ก ์์๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
COLOR_ORANGE๋ "#FF7F00"๋ณด๋ค ๊ธฐ์ตํ๊ธฐ ์ฝ๋ค.
COLOR_ORANGE๋ฅผ ์ฌ์ฉํ๋ฉด "#FF7F00"๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์คํ๋ฅผ ๋ผ ํ๋ฅ ๋ฎ๋ค.
COLOR_ORANGE๊ฐ #FF7F00๋ณด๋ค ์ ์๋ฏธํ๋ฏ๋ก, ์ฝ๋ ๊ฐ๋ ์ฑ์ด ์ฆ๊ฐํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ธ์ ์ผ๋ฐ์ ์ธ ์์๋ฅผ ์ฌ์ฉํ๊ณ , ์ธ์ ๋๋ฌธ์๋ฅผ ์ฌ์ฉ ํ๋ ๊ฑธ๊น?
'์์โ๋ ๋ณ์์ ๊ฐ์ด ์ ๋ ๋ณํ์ง ์์์ ์๋ฏธํ๋ค.
๊ทธ์ค์๋ ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ ์ด๋ฏธ ๊ทธ ๊ฐ์ ์๊ณ ์๋ ์์๋ ์๊ณ , ๋ฐํ์ ๊ณผ์ ์์ ๊ณ์ฐ๋์ง๋ง ์ต์ด ํ ๋น ์ดํ ๊ฐ์ด ๋ณํ์ง ์๋ ์์๋ ์๋ค.
์ฝ๊ฒ ๋งํด ๋๋ฌธ์ ์์๋ โํ๋ ์ฝ๋ฉโ ๊ฐ์ ๋ณ์นญ์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ฉด ๋๋ค.
โ
let message = "Hello";
alert(message); // Hello
let ํค์๋๋ฅผ ์ฌ์ฉํด ๋ณ์(variable)๋ฅผ ์์ฑํ๊ณ
์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฐ์ด๋ โ์ด๋ฆ ๋ถ์ ์ ์ฅ์โ ๊ฐ ๋๋ค.
ํ ์ค์ ์ฌ๋ฌ ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ
โ
let user = 'Kazama', age = 21, message = 'Hello';
์ด๋ ๊ฒ ์์ฑํ๋ฉด ์ฝ๋๊ฐ ์ข ๋ ์งง์ ๋ณด์ด์ง๋ง ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ ์๋๊ณ
๊ฐ๋
์ฑ์ ์ํด ํ ์ค ํ๋์ ๋ณ์๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
โ
let user = 'Kazama';
let age = 21;
let message = 'Hello';
Javascript์์ ๋ณ์ ๋ช ๋ช ์ ๋ ๊ฐ์ง ์ ์ฝ ์ฌํญ์ด ์๋ค.
์ฒซ์งธ. ๋ณ์๋ช ์๋ ์ค์ง ๋ฌธ์์ ์ซ์, ๊ทธ๋ฆฌ๊ณ ๊ธฐํธ $์ _๋ง ๋ค์ด๊ฐ ์ ์๋ค.
๋์งธ. ์ฒซ ๊ธ์๋ ์ซ์๊ฐ ๋ ์ ์๋ค.
โ
let userName;
let test123;
let $ = 1;
let _ = 2;
์ฌ๋ฌ ๋จ์ด๋ฅผ ์กฐํฉํ์ฌ ๋ณ์๋ช ์ ๋ง๋ค ๊ฒฝ์ฐ ์นด๋ฉ ํ๊ธฐ๋ฒ(camelCase)์ด ํํ ์ฌ์ฉ๋๋๋ฐ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ์์ฑํ๋ ๊ฒ์ด๋ค. ex)userLongName
๐ ๋ยท์๋ฌธ์ ๊ตฌ๋ณ : apple์ AppLE์ ์๋ก ๋ค๋ฅธ ๋ณ์์ด๋ค.
๐ ๋น ๋ผํด๊ณ ์ธ์ด๋ ๋ณ์๋ช
์ ์ฌ์ฉํ ์ ์์ง๋ง ๊ถ์ฅํ์ง ์๋๋ค.
๐ ์์ฝ์ด(reserved name) ๋ชฉ๋ก์ ์๋ ๋จ์ด๋ ๋ณ์๋ช
์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๐ use strict ์์ด ํ ๋นํ๊ธฐ. ๋ณ์๋ ๋๊ฐ ์ ์๋์ด ์์ด์ผ ์ฌ์ฉํ ์ ์๋ค.
var๋ก ์ ์ธํ ๋ณ์๋ let์ผ๋ก ์ ์ธํ ๋ณ์์ ์ ์ฌํ๋ฉฐ ๋๋ถ๋ถ let์ var๋ก, var๋ฅผ let์ผ๋ก ๋ฐ๊ฟ๋ ํฐ ๋ฌธ์ ์์ด ๋์ํ๋ค.
โ
var message = "Hello";
alert(message); // Hello
ํ์ง๋ง var๋ ์ด๊ธฐ Javascript ๊ตฌํ ๋ฐฉ์ ๋๋ฌธ์ let๊ณผ const๋ก ์ ์ธํ ๋ณ์์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
var๋ก ์ ์ธํ ๋ณ์์ ์ค์ฝํ๋ ํจ์ ์ค์ฝํ์ด๊ฑฐ๋ ์ ์ญ ์ค์ฝํ์ด๋ค. ๋ธ๋ก ๊ธฐ์ค์ผ๋ก ์ค์ฝํ๊ฐ ์๊ธฐ์ง ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ก ๋ฐ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
โ
if (true) {
var test = true; // 'let' ๋์ 'var'๋ฅผ ์ฌ์ฉ.
}
alert(test); // true(if ๋ฌธ์ด ๋๋ฌ์ด๋ ์ฌ์ ํ ๋ณ์์ ์ ๊ทผ ๊ฐ๋ฅ)
var๋ ์ฝ๋ ๋ธ๋ก์ ๋ฌด์ํ๊ธฐ ๋๋ฌธ์ test๋ ์ ์ญ ๋ณ์๊ฐ ๋๊ณ ์ ์ญ ์ค์ฝํ์์ ์ด ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.
๋ ๋ฒ์งธ ํ์์ var test๊ฐ ์๋ let test๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ณ์ test๋ if๋ฌธ ์์์๋ง ์ ๊ทผํ ์๊ฐ ์๋ค.
โ
if (true) {
let test = true; // 'let'์ผ๋ก ๋ณ์๋ฅผ ์ ์ธ
}
alert(test); // Error: test is not defined
let์ ํ ์ค์ฝํ์์ ๊ฐ์ ๋ณ์๋ฅผ ๋ ๋ฒ ์ ์ธํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
โ
let name;
let name; // Uncaught SyntaxError: Identifier 'name' has already been declared
var๋ ๊ฐ์ ๋ณ์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ค๋ณต์ผ๋ก ์ ์ธํ ์ ์๋ค. ํ์ง๋ง ์ด๋ฏธ ์ ์ธ๋ ๋ณ์์ var๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๋ฒ์งธ ์ ์ธ๋ฌธ์ ๋ฌด์๋๋ค.
โ
var name = "Peter";
var name = "Ted"; // ์ด ํ์ var ๋ ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ค
// ...์๋ฌ ๋ํ ๋ฐ์ํ์ง ์์ต๋๋ค.
alert(user); // Ted
var ์ ์ธ์ ํจ์๊ฐ ์์๋ ๋ ์ฒ๋ฆฌ๋๊ณ ์ ์ญ์์ ์ ์ธํ ๋ณ์๋ผ๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ์์๋ ๋ ์ฒ๋ฆฌ๋๋ค.
ํจ์ ๋ณธ๋ฌธ ๋ด์์ var๋ก ์ ์ธํ ๋ณ์๋ ์ ์ธ ์์น์ ์๊ด์์ด ํจ์ ๋ณธ๋ฌธ์ด ์์๋๋ ์ง์ ์์ ์ ์๋๋ค(๋จ, ๋ณ์๊ฐ ์ค์ฒฉ ํจ์ ๋ด์์ ์ ์๋์ง ์์์ผ ์ด ๊ท์น์ด ์ ์ฉ๋จ)
โ
function sayHi() {
var phrase;
phrase = "Hello";
alert(phrase);
}
sayHi();
์๋์ ๊ฐ์ ๋ฐฉ์๋ ์์ ๋์ผํ๊ฒ ์ธ์ํ๋ค.
โ
function sayHi() {
phrase = "Hello";
alert(phrase);
var phrase;
}
sayHi();
์ด๋ ๊ฒ ๋ณ์๊ฐ ๋์ด์ฌ๋ ค ์ง๋ ํ์์ ๐'ํธ์ด์คํ (hoisting)'์ด๋ผ๊ณ ํ๋๋ฐ var๋ก ์ ์ธํ ๋ชจ๋ ๋ณ์๋ ํจ์์ ์ต์์๋ก โ๋์ด ์ฌ๋ ค์ง๊ธฐ(hoisted)โ ๋๋ฌธ์ด๋ค.
๊ณผ๊ฑฐ์ var๋ง ์ฌ์ฉํ ์ ์์๋๋ฐ var์ ์ค์ฝํ๋ ๋ธ๋ก ๋ ๋ฒจ ์์ค์ด ์๋๋ค.
๊ทธ๋์ ๊ฐ๋ฐ์๋ค์ var๋ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ๊ฐ์ง ์ ์๊ฒ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ์์ ๊ณ ๋ คํ๊ฒ ๋๊ณ ์ด๋ ๋ง๋ค์ด์ง ๊ฒ์ด ๐'์ฆ์ ์คํ ํจ์ ํํ์(immediately-invoked function expressions)'์ด๋ค. ์ฆ์ ์คํ ํจ์ ํํ์์ IIFE ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
โ
// IIFE๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
(function() {
alert("ํจ์๋ฅผ ๊ดํธ๋ก ๋๋ฌ์ธ๊ธฐ");
})();
(function() {
alert("์ ์ฒด๋ฅผ ๊ดํธ๋ก ๋๋ฌ์ธ๊ธฐ");
}());
!function() {
alert("ํํ์ ์์ ๋นํธ NOT ์ฐ์ฐ์ ๋ถ์ด๊ธฐ");
}();
+function() {
alert("ํํ์ ์์ ๋จํญ ๋ง์
์ฐ์ฐ์ ๋ถ์ด๊ธฐ");
}();
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ํจ์ ํํ์์ฒ๋ผ ์ธ์๋์ด ๋ฐ๋ก ์คํ์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ผ๋ฐ์ ์ธ Javascript ์์๋ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค.
var๋ง์ ํน์ฑ์ ๋๋ถ๋ถ์ ์ํฉ์์ ์ข์ง ์์ ๋ถ์์ฉ์ ๋ง๋ค์ด ๋ถ์์ฉ์ ์์ ๊ธฐ ์ํด let์ด ํ์ค์ ๋์
์ด ๋์๋ค.
๋ณ์๋ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ๊ฐ๋ ๊ฒ ์ข์ผ๋ฏ๋ก ์ด์ ๋ let๊ณผ const๋ฅผ ์ด์ฉํด ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ ๋์ธ๊ฐ ๋์๋ค.
var, let, const๋ฅผ ์ฌ์ฉํด ๋ณ์๋ฅผ ์ ์ธํ ์ ์๊ณ ์ ์ธ๋ ๋ณ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
const โ let๊ณผ ๋น์ทํ์ง๋ง, ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
let โ ์ผ๋ฐ์ ์ธ ๋ณ์ ์ ์ธ ํค์๋.
var โ ์ค๋๋ ๋ณ์ ์ ์ธ ํค์๋. ์ง๊ธ์ ์ ์ฌ์ฉํ์ง ์๋ ์ถ์ธ์ด๋ค.
๋ณ์๋ช ์ ๋ณ์๊ฐ ๋ด๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ฝ๊ฒ ์ ์ ์๋๋ก ์ง์ด์ ธ์ผ ํฉ๋๋ค.