block이란 중괄호({}, curly brace)로 감싸진 것을 block이라고 합니다.
{}(block) 내부에서 변수가 정의되면 변수는 오로지 block 내부에서만 사용할 수 있습니다.(변수의 효력이 내부에서만 살아있다!)
{}(block) 내부에서 정의된 변수는 local(지역)변수라고 합니다.
함수,for,if 문도 하나의 block 입니다.
함수의 내부는 하나의 block입니다.
function hi() {
return 'i am block';
}
for문도 {} 있으니 하나의 block입니다.
for(let i = 0; i < 10; i++) {
let j = 'one';
//(block 내부에서 선언이 되었기에 local변수 입니다.)
console.log(j);
}
function life() {
let result = 10; //local
return result;
}
console.log(result)// result가 정의되지 않았다고 에러가 뜬다!
console.log(result)에서 getResult 내부에 접근이 불가능 하기 때문에 result라는 변수가 존재하는지 모릅니다.
result라는 변수는 getResult 함수의 {}(block)에서만 사용할 수 있습니다.
const color = 'red'; //전역변수
console.log(color); //red;
function returnColor() {
console.log(color); //red
return color;
}
console.log(returnColor());
returnColor 함수 내에서, returnColor 함수 밖에 있는 color라는 변수를 return 해주었습니다.
color 라는 변수는 **global** 변수이기 때문에 returnColor 함수의 block에서도 **"접근이 가능"**해서 'red'를 반환한 것입니다.
global namespace
를 갖습니다. namespace
란 변수 이름을 사용할 수 있는 범위라는 뜻입니다.(=== scope) 변수 이름 을 얘기할 때 namespace
라고도 합니다. const satellite = 'The Moon';
const galaxy = 'The Milky Way';
let stars = 'North Star';
const callMyNightSky = () => {
stars = 'Sirius; //내부에서 변수선언을 하지 않았기에 전역변수의 값이 변한다.
return 'Night Sky:' + satellite + ',' + stars + galaxy;
};
console.log(callMyNightSky());
console.log(stars);
함수 내부에서 변수 키워드를 작성하지 않아 stars 변수에 'sirius'로 값이 변경되어 block 밖에서 변수에 접근해도 내부의 값과 동일하게 나온다.
가독성
이 좋습니다.유지보수
)