读书笔记-你不知道的JS上-声明提升
变量声明提升
Javascript代码一般情况下是由上往下执行的,但是有些情况下不成立。
a = 2; //变量声明被提升在当前作用域顶部 var a; console.log(a); //2 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); } }
老子要日穿V8引擎