
๋๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์ดํ๋ฆฌ์ผ์ด์ (Application)์ ์ฌ์ฉ์ ๋๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
์์)
์จ๋ผ์ธ ์ผํ๋ชฐ - ํ๋งค์ค์ธ ์ํ์ด๋ ์ฅ๋ฐ๊ตฌ๋ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ๊ฒฐ์ ์ฐฝ์ผ๋ก ๋์ด๊ฐ
์ฑํ ์ดํ - ์ฌ์ฉ์, ๋ฉ์์ง ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ์๋ก ๋ํํ ์ ์๋ ์ฑํ ์ฅ์ ๋์ํจ
์ด๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ๊ฒ์ด '๋ณ์(Variables)'์ด๋ค.
๋ค์ํ๊ณ ์์๋ก ๋ฐ๋๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅ๋ ์์ด ๋ง ๋ณด๋ด๊ฒ ๋๋ฉด ์ง์ ๋ถํด์ง๊ณ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง ๊ฒ์ด๋ค.
๋ณ์(Variables)
๋ณ์(variables) : ๋ฐ์ดํฐ(data)๋ฅผ ์ ์ฅํ ๋ ์ฐ๋ ์ด๋ฆ์ด ๋ถ์ ์ ์ฅ์
1. let ์ ์ด์ฉํ ๋ณ์์ ์ธ
let message; // let์ ๋ณ์๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ, ํ์ฌ message๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋ณ์๋ฅผ ์ ์ธํจ
message = 'hey!'; // message๋ผ๋ ๋ณ์์์ string type์ธ hey!๋ฅผ ์ ์ฅํจ
console.log(message); // ์ฝ์ ์ฐฝ์ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ๋ณด์ฌ์ค
โ ๋ณ์๋ฅผ ์ ์ธ๊ณผ ๋์์ ํ ๋น ๊ฐ๋ฅ
// ๋ณ์๋ฅผ ์ ์ธ๊ณผ ๋์์ ํ ๋น ๊ฐ๋ฅ
let hello = 'heyheyhey';
โ ํ ์ค์ ์ฌ๋ฌ ๊ฐ์ง ๋ณ์๋ฅผ ์ ์ธ ๊ฐ๋ฅ
// ํ์ค์ ์ฌ๋ฌ๊ฐ์ง ๋ณ์๋ฅผ ์ ์ธ ๊ฐ๋ฅ
let user = 'Taylor', age = 30, message = 'look what you made me do๐';
์ฌ๋ฌ๊ฐ์ง ๋ณ์๋ฅผ ์ ์ธํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ๊ฐ๋ ์ฑ ์ข๊ฒ ์์ฑ ๊ฐ๋ฅ
let user = 'bob',
age = 22,
message = 'get up!';
โก๏ธ ๊ธฐ์ ์ ์ธ ์ฐจ์ด๊ฐ ์์ง ์์ผ๋ฉฐ ๊ฐ์ธ์ ์ทจํฅ ์ฐจ์ด๋ก ํธํ ๋ฐ๋ก ์์ฑ
โ let์ ์ด์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ ๊ฒฝ์ฐ ๋ณ์ ์์ ์ ์ฅ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์
let user = 'baby';
console.log(user); // baby
user = 'bob'
console.log(user); // bob
2-A. const๋ฅผ ์ด์ฉํ ๋ณ์ ์ ์ธ
โ ๋ณํ์ง ์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ let ๋์ const๋ฅผ ์ฌ์ฉ
โ const๋ก ์ ์ธํ ๋ณ์๋ฅผ ์์(Constatant)๋ผ๊ณ ํจ, ์ฐ๋ฆฐ ์ด๊ฒ์ ์์๋ผ ๋ถ๋ฅด๊ธฐ๋ก ํ์ด์.
โ const๋ ์ฌํ ๋น์ด ๋ถ๊ฐ๋ฅ, ๋ณ๊ฒฝ ์ Error ๋ฐ์
const myBirthday = '01.01.2000';
myBirthday = '01.02.2000'; // Error! can't reassign the constant!
๐ ์ผ์ฃผ์ผ ์ผ์(7์ผ) ํ๋ฃจ์ ์๊ฐ(24์๊ฐ)๊ณผ ๊ฐ์ด ์ ๋ ๋ณํ์ง ์์ ๊ฒ์ด๋ผ ํ์ ๋๋ ๊ฐ์ const๋ฅผ ์ด์ฉํด ์ ์ฅ
โก๏ธ ํ์ ์์๋ ๋ณ๊ฒฝ์ ํ๋ฉด ์ ๋๋ ๊ฐ์ด๋ผ๋ ๊ฒ์ ํ๊ฐ๋ฐ์๋ค์๊ฒ ์๋ฆด ์ ์์
2-B. ๋๋ฌธ์ ์์(Uppercase Constants)
โ ๊ธฐ์ตํ๊ธฐ ํ๋ค๊ฑฐ๋ ์คํ๊ฐ ๋๊ธฐ ์ฌ์ด ๊ฐ์ ๋ณ์์ ํ ๋นํด ๋ณ์นญ์ผ๋ก ์ฌ์ฉ
โ ๋ณดํต ๋๋ฌธ์์ ๋ฐ์ค๋ก ๊ตฌ์ฑ๋์ด์์
โ ์ ์ง๋ณด์์ ์ฉ์ด
const COLOR_RED = '#f00';
const COLOR_GREED = '#0f0';
// ์์์ ๊ณ ๋ฅด๊ณ ์ถ์ ๋ ๋ณ์นญ์ ์ฌ์ฉ, ๋ณ์๋ช
์ด ์๋ชป๋๋ค๋ฉด error๋ฅผ ๋ฟ์ด๋ด ๋๋ฒ๊น
์ฌ์ด์ง
let color = COLOR_GREEN;
console.log(color); // #0f0
3. var๋ฅผ ์ด์ฉํ ๋ณ์์ ์ธ
โ let์ด๋ const ๋์ var๋ฅผ ์ด์ฉํด์ ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒฝ์ฐ๋ฅผ ์ข ์ข ๋ณผ ์ ์์
โ var๋ let๊ณผ ๊ฑฐ์ ๋์ผํ๊ฒ ๋์ํ์ง๋ง ์ค๋๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์ ์ง์ โ
๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ var๋ก ์ ์ธ๋ ๋ณ์๋ let์ผ๋ก ๋ฐ๊ฟ๋ ๋ฐ๋๋ก let์ var๋ก ๋ฐ๊ฟ๋ ๋ฌด๋ฆฌ ์์ด ๋์
var message = 'hello!';
console.log(message); // hello!
ํ์ง๋ง var๋ ์ด๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌํ ๋ฐฉ์์ผ๋ก let๊ณผ const ์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๋!
๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ์ ์๋ ํํ๋ฒ์ ๋น๋ฆฌ์๋ฉด...

์ค๋๋ ์คํฌ๋ฆฝํธ์์ ๋น์ ์ ๊ธฐ๋ค๋ฆฌ๋ monster.....
๊ท์ฌ์ด ๊ผฌ๋ถ๊ธฐ์ ๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋ง์์ด ์กฐ๊ธ ๋์ผ ์๋?๐ซ

๋ปฅ์ด๊ณ ์.
์๋ ์คํฌ๋ฆฝํธ์์ var๋ฅผ let์ผ๋ก ๋ฐ๊ฟ์ผ ํ ์ผ์ด ์๋ค๋ฉด var๋ฅผ ์ฐ๋ฉด ์ ๋๋ ์ด์ ๋ฅผ ํ์คํ ์๊ณ ๊ฐ์ผ ํจ.
์๊ฐ์ง๋ ๋ชปํ ์๋ฌ์ ๋ฑ์ฅ์ผ๋ก ๋ท๋ชฉ ์ก๊ณ ์์นจ๋๋ผ๋ง ์ฐ๊ณ ์ถ์ง ์๋ค๋ฉด..
๊ฐ๋จํ๊ฒ var๋ฅผ ์ฌ์ฉํด์ ์ ๋๋ ์ด์ ๋ฅผ ์์๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1) var๋ ๋ธ๋ก ์ค์ฝํ๊ฐ ์๋ค!
โ ๏ธ var๋ก ์ ์ธํ ๋ณ์์ ์ค์ฝํ๋ ํจ์ ์ค์ฝํ ๋๋ ์ ์ญ ์ค์ฝํ โก๏ธ ๋ธ๋ก ๋ฐ์์ ์ ๊ทผ ๊ฐ๋ฅ
for (var i = 0; i < 5; i ++ ) {
//...blah blah
}
console.log(i); // 5
for๋ฌธ๋ฟ๋ง ์๋๋ผ function, while, if ๋ฑ๋ฑ ์ค์ฝํ ์์์ ์ฐ์ธ๋ค๋ฉด ์ ๋ถ ๋ฐ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค ๐
2) var๋ ๋ณ์์ ์ค๋ณต ์ ์ธ์ ํ์ฉํ๋ค!
โ ๏ธ ํ ์ค์ฝํ์์ ๊ฐ์ ๋ณ์๋ฅผ let์ผ๋ก ๋ ๋ฒ ์ ์ธํ๋ฉด ์๋ฌ๋ฐ์
let user = 'jason'
let user = 'ajax'
console.log(user); // SyntaxError: Identifier 'user' has already been declared
โ ๏ธโ ๏ธโ ๏ธโ ๏ธ ํ์ง๋ง var๋ฅผ ์ฌ์ฉํ๋ค๋ฉด..? โ ๏ธโ ๏ธโ ๏ธโ ๏ธ
์ด๋ฐ ์ ์ ๋๊ฐ ์ง ๊ฐ๋ฅ...... ๐
var user = 'python';
var user = 'c++'; // ์ด var๋ ์๋ฌด๊ฒ๋ ํ์ง ์์, ์ด๋ฏธ ์ ์ธ๋ ๊ฒ
// ์๋ฌ๋ ๋ฐ์ํ์ง ์์
console.log(user); // c++
3) ์ ์ธํ๊ธฐ ์ ์ฌ์ฉ ๊ฐ๋ฅํ var!
โ ๏ธ var๋ ์ ์ธ์ ํจ์๊ฐ ์์๋ ๋ ์ฒ๋ฆฌ๋จ
โ ๏ธ ์ ์ญ์์ ์ ์ธํ ๋ณ์๋ผ๋ฉด? ์คํฌ๋ฆฝํธ๊ฐ ์์๋ ๋ ์ฒ๋ฆฌ๋จ
โ ๏ธ ์ ์ธ๋ ๊ฒ์ด ์๋ก ๋์ด์ฌ๋ ค์ง๋ ๊ฒ์ ํธ์ด์คํ (hoisting)์ด๋ผ ๋ถ๋ฆ
function sayHey() {
message = 'hey!';
if(false) {
var message; // ๋ธ๋ก ์ค์ฝํ๊ฐ ๋ฌด์๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ ์ ์ธํด๋ ์๊ด์์
}
console.log(message);
}
sayHey(); // hey!
4. ๋ณ์ ๋ช ๋ช ๊ท์น
โ ๋ณ์๋ช ์๋ ์ค์ง ๋ฌธ์์ ์ซ์, ๊ธฐํธ$ ์ _ ๋ง ๋ค์ด๊ฐ ์ ์์
โ ๋์ ์ฒซ ๊ธ์๋ ์ซ์๊ฐ ๋ ์ ์์
โ camelCase* ๋ฅผ ์ด์ฉํด์ ๋ณ์๋ช ๋ช
*camelCase : ์ฒซ ๋จ์ด๋ฅผ ์ ์ธํ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ์์ฑ
// ๊ฐ๋ฅํ ๋ณ์๋ช
let userName;
let test123;
let $;
let _;
// ๋ถ๊ฐ๋ฅํ ๋ณ์๋ช
let 1abc; // ์ซ์๋ก ์์ ๋ถ๊ฐ๋ฅ
let my-name; // ํ์ดํ์ ๋ณ์๋ช
์ ์ฌ ์ ์์
โ ๋์๋ฌธ์ ๊ตฌ๋ณ : apple๊ณผ AppLE์ ์๋ก ๋ค๋ฅธ ๋ณ์
โ ๋ณ์๋ช ์ ์์ด๋ฅผ ์ฌ์ฉํด์ ๋ง๋๋ ๊ฒ ๊ตญ์ ์ ์ธ ๊ด์ต
โ ์์ฝ์ด ๋ชฉ๋ก์ ์๋ ๋จ์ด๋ ๋ณ์๋ช ์ผ๋ก ์ฌ์ฉ ๋ถ๊ฐ๋ฅ
WHY? ์๋ฐ์คํฌ๋ฆฝํธ ๋ด๋ถ์์ ์ด๋ฏธ ์ฌ์ฉ ์ค
์์ฝ์ด ์์ : let, class, returnm function
let let = 5; // Error
let function = 'hey'; //Error
5. ๋ณ์ ๋ช ๋ช ์ ์ฐธ๊ณ ํ๊ธฐ ์ข์ ๊ท์น!
โ userName์ด๋ shoppingCart์ฒ๋ผ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ ์ฌ์ฉ
โ ์ค์๋ง๊ณผ a,b,c๊ฐ์ ์งง์ ์ด๋ฆ ์ง์
โ ์์ ๋ง์ ๊ท์น์ด๋ ์์๋ ํ์ ๊ท์น์ ๋ฐ๋ฅด๊ธฐ
โก๏ธ ๋ณ์๋ช ์ ๊ฐ๊ฒฐํ๊ณ ๋ช ํ
โก๏ธ ๋ณ์์ ๋ฌด์์ ๋ด๊ณ ์๋์ง ์ ์ค๋ช
โก๏ธ ๋ณ์์ ์ด๋ฆ์ ์ง๋ ๊ฒ์ ๊ฐ์ฅ ์ค์ํ์ง๋ง ๋ณต์กํ ๊ธฐ์
โก๏ธ ์ด๋ฆ์ง๋ค ์ฌ๋งํ์ง ์๋๋ก... ๊ฐ์ธ์ ์ผ๋ก naver์์ด์ฌ์ ์ฆ๊ฒจ์ฐพ๊ธฐ ํด๋๊ณ ์ ๋งคํ ๋๋ฉด ์จ๋จน๋ ์ค
6. use strict ์์ด ํ ๋นํ๊ธฐ
โ ๋ณ์๋ ๋๋ถ๋ถ ์ ์๋์ด์์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅํจ
โ ์ด์ ๋ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์์๋ let์ด๋ const ์์ด๋ ๋จ์ํ๊ฒ ๊ฐ์ ํ ๋นํด ๋ณ์๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅ
โ use strict๋ฅผ ์ฐ์ง ์์ผ๋ฉด ๊ณผ๊ฑฐ ์คํฌ๋ฆฝํธ์์ ํธํ์ฑ ์ ์ง๋ฅผ ์ํด ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง ๊ถ์ฅํ์ง๋ ์์
num = 3; // use strict ๊ฐ ์์ผ๋ฉด ์ ์ ๋์ด์์ง ์์๋ ๋จ์ ํ ๋น์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅ
console.log(num); // 3
'use strict';
num = 3; // error: num is not defined
Reference (์ฐธ์กฐ)
https://ko.javascript.info/variables
https://ko.javascript.info/var