js 的變量提升和函數提升

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()


?



~~!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容