var a = 1; functionf () { var a = 100 var b = 2 let c = 3 const d = 4 console.log(a) // 100 console.log(b) console.log(c) console.log(d) }; f(); console.log(a); // 1 console.log(b); // ReferenceError // console.log(c); // ReferenceError // console.log(d); // ReferenceError
var a = 1; { var a = 100 var b = 2 let c = 3 const d = 4 console.log(a) // 100 console.log(b) console.log(b) console.log(d) }; console.log(a); // 100 console.log(b); // 2 console.log(b); // ReferenceError // console.log(d); // ReferenceError
1 2 3 4 5 6 7 8 9 10 11
for (let i = 0; i<=10; i++) { console.log(i) }; console.log(i) // ReferenceError
//
for (var i = 0; i<=10; i++) { console.log(i) }; console.log(i) // 11
console.log(a); // f a() {...} var a = 100; functiona() { console.log("Hello World!") }; console.log(a); // 100
// 调换顺序,结果一致 console.log(a); // f a() {...} functiona() { console.log("Hello World!") }; var a = 100; console.log(a); // 100
// 以上均相当于 functiona() { console.log("Hello World!") }; var a; // 相同变量名,忽略 console.log(a); a = 100; console.log(a);
所以,对于最开始的那道题
1 2 3 4 5 6 7 8 9
console.log(a) // f a() {...} a(); // 10 var a = 3; functiona(){ console.log(10); }; console.log(a); // 3 a = 6; a(); // TypeError, a is not a function