html은 정적이지만, js는 웹브라우저의 cpu를 통해 동적으로 작동하게 해준다.
변수가 접근할 수 있는 범위
{ }
밖에 선언되면 어디서든 접근 가능한 전역 변수가 되고 전역 스코프에 정의된다.{ }
안에 선언되었기에 괄호 안에서만 호출이 가능한 지역 변수가 되고 지역 스코프에 정의⚡️Lexical Scope
자바스크립트의 scope
함수를 어디서 선언했는지에 따라 상위 스코프를 결정하는 것. 호출이 아니라 선언에 따라 결정된다.
함수의 선언에 따라 상위 스코프가 결정됨!
자바스크립트는 함수가 실행되기 전 함수 안에 필요한 변수명들을 모두 모아 유효 범위의 최상단에 선언.
값을 올리진 않는다. (선언만 되고, undefined 상태)
var는 호이스팅이 되지만, let,const는 호이스팅이 되지 않는다.
⚡️ undefined vs Null
둘다 값이 없음을 의미하지만,
null은 '값이 없다'를 의미로 가지고,
undefined는 의미가 없고, 변수가 선언되었는데 값이 없을때 할당된다. 선언했으나 초기화가 없을 때 자동 할당
null == undefined //true
null === undefined //false
⚡️ ===
일치 연산자 (타입까지 비교)
2=='2' //true
2==='2' //false