관리 메뉴

Lennon FE

[JS] μŠ€μ½”ν”„(1) - μ „μ—­, 지역 μŠ€μ½”ν”„μ— λŒ€ν•΄ λ³Έλ¬Έ

πŸ§‘‍πŸ’» Web/JavaScript

[JS] μŠ€μ½”ν”„(1) - μ „μ—­, 지역 μŠ€μ½”ν”„μ— λŒ€ν•΄

Lennon 2021. 11. 26. 00:10
728x90
λ°˜μ‘ν˜•

이번 ν¬μŠ€νŒ…μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ€‘μš”ν•œ κ°œλ…μΈ μŠ€μ½”ν”„μ— λŒ€ν•΄ μž‘μ„±ν•΄λ³΄λ € ν•œλ‹€.

 

μŠ€μ½”ν”„ = 유효 λ²”μœ„

μŠ€μ½”ν”„λŠ” λ³€μˆ˜ 그리고 ν•¨μˆ˜μ™€ 관련이 κΉŠλ‹€. ν•¨μˆ˜ λ‚΄μ˜ λ§€κ°œλ³€μˆ˜λŠ” ν•¨μˆ˜ λ‚΄μ—μ„œλ§Œ μ°Έμ‘°ν•  수 있고, μ™ΈλΆ€μ—μ„œλŠ” μ°Έμ‘°ν•  수 μ—†λ‹€. 

λͺ¨λ‘ μ•Œκ³ λ¦¬μ¦˜μ„ κ³΅λΆ€ν•˜κ±°λ‚˜ 반볡문 및 쑰건문을 κ³΅λΆ€ν•˜λ©΄μ„œ μŠ€μ½”ν”„ λ•Œλ¬Έμ— 생긴 였λ₯˜λ₯Ό ν•œ λ²ˆμ―€μ€ 봀을 거라 μƒκ°ν•œλ‹€.

 

λ°˜λ³΅λ¬Έμ—μ„œμ˜ μŠ€μ½”ν”„

for(let i = 0; i < 1; i++){
   let num = 0;
   for(let j = 0; j < 10; j++){
   	num+=j;
   }
}

console.log(num) // μ—λŸ¬ λ°œμƒ

ν•¨μˆ˜μ—μ„œμ˜ μŠ€μ½”ν”„

function add(num1, num2){
    console.log(num1, num2);
    return num1+num2;
}

add(1,2); // 3

console.log(num1, num2) // μ—λŸ¬ λ°œμƒ

 

λ³€μˆ˜λŠ” μžμ‹ μ΄ μ„ μ–Έλœ μœ„μΉ˜μ— μ˜ν•΄ μœ νš¨ν•œ λ²”μœ„λ₯Ό 가진닀. 첫 번째 forλ¬Έμ•ˆμ— μ„ μ–Έλœ numλ³€μˆ˜λŠ” forλ¬Έ λΈ”λŸ­ λ‚΄μ—μ„œλ§Œ μœ νš¨ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€. 두 번째 ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜ λ˜ν•œ ν•¨μˆ˜ λ‚΄ λ²”μœ„μ—μ„œλ§Œ μœ νš¨ν•˜λ‹€. 즉 μŠ€μ½”ν”„λŠ” μ‹λ³„μžκ°€ μœ νš¨ν•œ λ²”μœ„λ₯Ό λ§ν•œλ‹€.

 

var의 μŠ€μ½”ν”„

 

반면 μ•„λž˜ μ½”λ“œμ™€ 같이 var을 μ“°λ©΄ ν•¨μˆ˜ 블둝 λ²”μœ„λ₯Ό μ œμ™Έν•œ 쑰건문, 반볡문 λ²”μœ„ λ‚΄μ˜ λ³€μˆ˜λ₯Ό μ™ΈλΆ€μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

if(true){
   var var2 = 0;
}
        
console.log(var2) // 0


function fuc1(){
   var i = 0;
   return i;
}

console.log(i) // μ—λŸ¬λ°œμƒ

 

 

μŠ€μ½”ν”„λ₯Ό 톡해 같은 μ΄λ¦„μ˜ λ³€μˆ˜ μ‚¬μš© κ°€λŠ₯

 

μŠ€μ½”ν”„λ₯Ό μ΄μš©ν•˜λ©΄ 같은 μ΄λ¦„μ˜ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수  있게 ν•œλ‹€.

μŠ€μ½”ν”„ λ‚΄μ—μ„œ μ‹λ³„μžλŠ” μœ μΌν•΄μ•Ό ν•˜μ§€λ§Œ, λ‹€λ₯Έ μŠ€μ½”ν”„μ—λŠ” 같은 μ΄λ¦„μ˜ μ‹λ³„μžλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

let x = 'hello park';

if(true){
    let x = 'hello minho';
    console.log(x); // 'hello minho'
}

console.log(x) // 'hello park'

 

참고둜 varν‚€μ›Œλ“œλŠ” 같은 μŠ€μ½”ν”„ λ‚΄μ—μ„œ 쀑볡 선언을 ν—ˆμš©ν•œλ‹€. 반면 letκ³Ό constλŠ” 였λ₯˜λ₯Ό μΌμœΌν‚¨λ‹€.

 

μŠ€μ½”ν”„μ˜ μ’…λ₯˜

μŠ€μ½”ν”„λŠ” μ „μ—­κ³Ό μ§€μ—­μœΌλ‘œ ꡬ뢄할 수 μžˆλ‹€.

 

μ „μ—­: μ½”λ“œμ˜ κ°€μž₯ λ°”κΉ₯ μ˜μ—­

지역: μ‘°κ±΄λ¬Έμ΄λ‚˜ 반볡문, ν•¨μˆ˜ λͺΈμ²΄ λ‚΄λΆ€

let num = 10 // μ „μ—­λ³€μˆ˜    -------------------------------

for(let i = 0; i < 10; i++){
	let num2 = 10 // μ§€μ—­λ³€μˆ˜
}                      //   4 line 지역 μŠ€μ½”ν”„

function add(x,y){             
	x = x || 0;  // μ§€μ—­λ³€μˆ˜
    y = y || 0;  // μ§€μ—­λ³€μˆ˜
    
    return x+y;
}                      //  8-11 line 지역 μŠ€μ½”ν”„

---------------------------------------------------------// μ „μ—­ μŠ€μ½”ν”„

μ‰½κ²Œ λ§ν•˜λ©΄ μ§€μ—­μ΄λž€ ν•¨μˆ˜ λͺΈμ²΄ λ‚΄λΆ€λ₯Ό λ§ν•œλ‹€. 지역에 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ 지역 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” 지역 λ³€μˆ˜κ°€ λœλ‹€.

전역은 말 κ·ΈλŒ€λ‘œ 라인 전체이닀. μ „μ—­μ—μ„œ μ„ μ–Έν•œ num λ³€μˆ˜λŠ” 지역 λ‚΄μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

쀑첩 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œμ˜ μŠ€μ½”ν”„

 

ν•¨μˆ˜λ‚΄μ˜ ν•¨μˆ˜λ₯Ό μƒκ°ν•΄λ³΄μž. λ³€μˆ˜μ— λŒ€ν•œ μŠ€μ½”ν”„κ°€ μ–΄λ–»κ²Œ μ •μ˜λ κΉŒ?

 

??에 λŒ€ν•œ 해닡을 μƒκ°ν•΄λ³΄μž.

let x = 10;
let y = 20;

function fuc1(){
    let z = 30;
    
    console.log(x,y,z) // ??
    
    function fun2(){
        let y = 40;
        
        console.log(x,y,z) // ??
    }
    
    fun2()
}

fuc1()

x,yλŠ” μ „μ—­ λ³€μˆ˜λ‘œ μ„ μ–Έλœ x,y이며,

zλŠ” fun1 내뢀에 μ„ μ–Έλœ zλ₯Ό μ‚¬μš©ν•œλ‹€.

 

즉 ?? = 10, 20, 30이 λ‚˜μ˜¬κ²ƒμ΄λ‹€.

 

fun2()

xλŠ” μ „μ—­ λ³€μˆ˜λ‘œ μ„ μ–Έλœ x

yλŠ” fun2 내뢀에 μ„ μ–Έλœ y

zλŠ” fuc1에 μ„ μ–Έλœ zλ₯Ό μ‚¬μš©ν•œλ‹€. 

 

즉 ?? = 10, 40, 30이 λ‚˜μ˜¬κ²ƒμ΄λ‹€.

 

κΈ°λ³Έ λ™μž‘ μ›λ¦¬λŠ” 이렇닀.

 

ν•΄λ‹Ή ν¬μŠ€νŒ…μ—μ„œ 기본적인 μŠ€μ½”ν”„μ— λŒ€ν•΄ μ•Œμ•„λ΄€λ‹€. 

 

λ‹€μŒ ν¬μŠ€νŒ…μ€ 더 깊게 λ“€μ–΄κ°€ μŠ€μ½”ν”„ 체인, ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„, λ ‰μ‹œμ»¬ μŠ€μ½”ν”„μ— λŒ€ν•΄ μž‘μ„±ν•΄μ•Όκ² λ‹€. 

728x90
λ°˜μ‘ν˜•
Comments