读书笔记-你不知道的JS上-声明提升

时间:2022-06-28 14:56:55

变量声明提升

  Javascript代码一般情况下是由上往下执行的,但是有些情况下不成立。

    a = 2;
//变量声明被提升在当前作用域顶部
var a;
console.log(a); //
console.log(b); //undefined
//同样被提升
var b;

  如果同时有函数声明与变量声明呢?

    console.log(a); //funciton a(){}
var a;
//函数先提升 变量后提升 因此变量的声明被忽略
function a() {}

  两个函数声明呢?

    fn(); //输出了2!

    function fn() {
console.log(1);
}
//后声明的函数覆盖了前面的函数
//可以理解为 var a = 1; var a = 2
function fn() {
console.log(2);
}

  另外一个案例在chrome中报错了,估计是浏览器优化过,但是不在判断语句中声明函数是一个好的习惯。

    fn(); //error
var a = true;
if (a) {
function fn() {
console.log(1);
}
} else {
function fn() {
console.log(2);
}
}