function example(){
var i= 1;
}
console.log(i) // 참조 에러
function example1(){
i = 1;
}
function example2() {
console.log(i);
}
example();
example1(); // 1이 출력 됨.
for (var i=0; i<10; i++){
console.log(i)
}
console.log(i); // 10
console.log(myVar); // 참조 에러
console.log(myVar); // undefined
var myVar = 1;
6.호이스팅의 결과
var myVar = undefined;
console.log(myVar); // undefined
myVar = 1;
console.log(myVar); // undefined
myVar = 2;
console.log(myVar); // 2
var myVar = 1;
8.var 변수는 재정의가 가능하다.
var myVar = 1;
var myVar = 2;
if (true){
const i = 0;
}
console.log(i); // 참조 에러
let foo = 'bar1';
console.log(foo); // bar1
if(true){
let foo = 'bar2';
console.log(foo); // bar2
}
console.log(foo); // bar1
console.log(foo); // 참조 에러
const foo = 1;
12.const에서 호이스팅의 역할을 설명하기 위한 예
const foo = 1 의 변수를 참조 했지만, 임시적 사각지대여서 에러가 발생한다.
const foo = 1;
{
console.log(foo); // 참조 에러
const foo = 2;
}
var foo = 1;
(function() {
console.log(foo); // undefined
var foo = 2;
})();
const bar = 'a';
bar = 'b'; // 에러 발생.
var foo = 'a';
foo = 'b'; // 에러 없음
let value = 'a';
value = 'b'; // 에러 없음
Object.preventExtensions
Object.seal
Object.freeze
const bar = {prop1 : 'a' };
bar.prop1 = 'b';
bar.prop2 = 123;
console.log(bar); // { prop1: 'b' , prop2: 123 }
const arr = [10, 20];
arr[0] = 100;
arr.push(300);
console.log(arr); // [100, 20, 300 ]
const bar = { prop1: 'a' };
bar = { prop2: 123 }; // 에러 발생