λ”°νŒŒπŸ•
Hwaiian Pizza IT Pub
λ”°νŒŒπŸ•
  • ALL (62)
    • Front-End (13)
      • HTML & CSS (2)
      • JavaScript (7)
      • React (2)
      • TypeScript (0)
      • Jquery (0)
      • Git (1)
      • Editor (0)
    • Algorithms (44)
      • Baekjoon (28)
      • Programmers (13)
      • Algorithms (3)
    • Computer Science (0)
      • Math (0)
    • Conference (1)
    • Life (3)
      • Book (0)
hELLO Β· Designed By μ •μƒμš°.
λ”°νŒŒπŸ•

Hwaiian Pizza IT Pub

[μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜ μ„ μ–Έ var/let/const (varλ₯Ό μ‚¬μš©ν•΄μ„  μ•ˆλ˜λŠ”μ΄μœ )
Front-End/JavaScript

[μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μžλ°”μŠ€ν¬λ¦½νŠΈ λ³€μˆ˜ μ„ μ–Έ var/let/const (varλ₯Ό μ‚¬μš©ν•΄μ„  μ•ˆλ˜λŠ”μ΄μœ )

2022. 9. 21. 22:11
λ°˜μ‘ν˜•

 

 

λŒ€λ‹€μˆ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜(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

 

λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Front-End > JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μžλ°”μŠ€ν¬λ¦½νŠΈ μžλ£Œν˜• Map κ°œλ…μ •λ¦¬  (0) 2022.06.13
[μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μžλ°”μŠ€ν¬λ¦½νŠΈ μžλ£Œν˜• Set κ°œλ…μ •λ¦¬  (0) 2022.06.07
[μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] λ°°μ—΄(Array)의 κ°œλ…κ³Ό μ˜ˆμ‹œ (feat.λ“œλ¦Όμ½”λ”©)  (0) 2022.05.31
[μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μ•Œμ•„λ‘λ©΄ μœ μš©ν•œ λ°°μ—΄ Array λ©”μ†Œλ“œ 정리 (feat.λ“œλ¦Όμ½”λ”©)  (0) 2022.05.26
[μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μ•Œμ•„λ‘λ©΄ μœ μš©ν•œ Math λ©”μ†Œλ“œ 정리, 둜또번호 μΆ”μΆœκΈ°  (0) 2022.05.23
    'Front-End/JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μžλ°”μŠ€ν¬λ¦½νŠΈ μžλ£Œν˜• Map κ°œλ…μ •λ¦¬
    • [μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μžλ°”μŠ€ν¬λ¦½νŠΈ μžλ£Œν˜• Set κ°œλ…μ •λ¦¬
    • [μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] λ°°μ—΄(Array)의 κ°œλ…κ³Ό μ˜ˆμ‹œ (feat.λ“œλ¦Όμ½”λ”©)
    • [μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ] μ•Œμ•„λ‘λ©΄ μœ μš©ν•œ λ°°μ—΄ Array λ©”μ†Œλ“œ 정리 (feat.λ“œλ¦Όμ½”λ”©)
    λ”°νŒŒπŸ•
    λ”°νŒŒπŸ•
    μ €μͺ½ μ†λ‹˜μ΄ 보내신 μ—λŸ¬μž…λ‹ˆλ‹€. 디버깅 ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?🍹

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”