JS-Unbelievable

变量提升

   1、将变量声明提升到它所在作用域的最开始的部分
变量提升导致以下输出结果并不是我们认为的那样

1
2
3
4
5
6
7
8
9
10

var tmp = new Date();

function f() {
console.log(tmp);
if (false) {
var tmp = ‘hello world’;
}
}
f();

输出结果 undefined ,惊不惊喜,意不意外。

let 死区

2、我们再看一个例子:

1
2
3
4
5
let a = "hey I am outside";
if (true) {
console.log(a); //Uncaught ReferenceError: a is not defined
let a = "hey I am inside";
}