1. 深入理解 js 的变量提升和函数提升
先了解:js没有块级作用域,只有全局作用域,和函数作用域
相同的函数名会覆盖
new Foo.getName();
new Foo().getName();
函数的调用顺序:
优先级普及:new Foo() 和 . 优先级一样
new Foo < new Foo();
new < .
所以可有:
new Foo.getName(); ===》 new (Foo.getName());
new Foo().getName()===> (new Foo()) . getName();
1.变量提升
只会提升到自己所在作用域的顶部
变量提升不会赋值!!!!
2.函数提升:
只有函数声明式才会提升,function a(){};
函数字面量不会提升
//注意
function A(){
console.log(1);
}
function B(){
A:function(){ console.log(2);}
}
由于B()里面的A没有var 声明,所以默认是 window,所以B()中的A()会覆盖外面的A()
~~!!!