스코프란 변수의 유효 범위를 의미.
function friend(){
var name = '보연'; //지역변수
console.log(name);
}
friend(); //보연
console.log(name) //undefined
ES6문법인 let, const 선언된 변수,함수( {} 관호안에서만 변수 접근가능)들이 블록 스코프,
블록( {} )이 유효 범위.
function friend(name){
if(name){
let welcome = '나는 '+ name + ' 입니다.'
console.log(welcome); //나는 보연 입니다. (접근가능)
}
console.log(welcome); //undefined (접근불가)
}
friend('보연');
var 는 블록스코프를 무시 , 재선언을 해도 에러 ❌
(같은 스코프에서 동일이름의 변수를 재선언하는것은 버그를 유발)
전역변수를 var로 선언하는경우 문제가 될수있다.
(var로 선언한 전역 변수가 window 기능을 덮어씌워서 내장기능을 사용할 수 없게 만들 수 있다.)
선언키워드(var, let, const)없이 변수 할당 ❌
age는 선언한 적이 없으나, 값을 할당하면서 마치 var로 선언된 전역 변수처럼 작동.(실수 방지 위해 Strict Mode 사용- js 파일 상단에 'use strict'입력)