개발/javascript

[클린코드 자바스크립트] 함수 스코프 & 블럭 스코프 (function scope, block scope)

cookveloper 2022. 3. 2. 21:13

 

* 클린코드 자바스크립트 강의를 정리하고자 작성한 게시글입니다.

function scope & block scope

  • 함수단위 스코프 : var
  • 블럭단위 스코프 : const, let
  • var 사용은 지양한다.
    • 왜 ? 잦은 변수 사용을 하면 값이 바뀌는 경우가 생길 수도 있음. 짧은 소스코드는 괜찮지만 소스코드가 더 길고 복잡할 수록 버그 발생이 생기기 쉬움.
  • const는 재할당만 금지한다. 객체, 배열의 조작은 가능하다.
# var 사용을 지양하는 이유 

var global = '전역';

if(global === '전역') { 
  var global = '지역';
  console.log(global) // 지역
}

console.log(global) // 지역 -> 값이 바뀌는 불안요소가 있음. 
# 함수단위 스코프 

var name = 'kim';

function call() {
	var name = 'park';
  console.log(name); // park 
}

call(); 
console.log(name); // kim  
# 블럭단위 스코프 

let global = '전역';

if(global === '전역') {
  let global = '지역';
  console.log(global) // 지역
}

console.log(global) // 전역 > 안전한 변수 사용이 가능.
# 변수 재할당 

# 객체 
const person = {  // 변수 선언 + 할당 
	name: 'jang',
	age: 30
}

person = {   // 재할당 > error 
	name: 'kim',
	age: 20
}

person.name = 'kim';
person.age = 20; 

console.log(person); // 재할당 하지않고 값을 변경했기 때문에 동작 가능 {name: 'kim', age: 20} 

# 배열 
const persons = [
    { 
        name: 'jang',
        age: 30
    }
];

persons.push({
    name: 'kim',
    age: 20
});

console.log(persons); // 객체가 추가된 상태에서 정상 동작
반응형