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()
?
~~!!!