詳解javascript中的變量提升和函數(shù)提升
1在js中只有兩種作用域
a:全局作用域
b:函數(shù)作用域
在ES6之前,js是沒有塊級作用域。
首先來解釋一下什么是沒有塊級作用域?
所以此時 是可以打印輸出變量a的值。
2:什么是變量提升?
在我們的js中,代碼的執(zhí)行時分兩步走的,1、解析 2、一步一步執(zhí)行
那么變量提升就是變量聲明會被提升到作用域的最頂上去,也就是該變量不管是在作用域的哪個地方聲明的,都會提升到作作用域的最頂上去。
那么上面這種寫法其實等價于下面這種寫法:
看幾個例子:
把上面的例子稍作改動:
結果就會大不一樣,
再看一個例子:
3:什么是函數(shù)提升?
輸出的結果是:
注意:函數(shù)聲明式,會將函數(shù)的聲明和定義一起提升到作用域的最頂上去。
如果是這種寫法:函數(shù)表達式聲明的函數(shù)
例子:
輸出的結果是:
最后的總結:
1:所有的聲明都會提升到作用域的最頂上去。
2:同一個變量只會聲明一次,其他的會被忽略掉。
3:函數(shù)聲明的優(yōu)先級高于變量申明的優(yōu)先級,并且函數(shù)聲明和函數(shù)定義的部分一起被提升。
相關文章
js中escape對應的C#解碼函數(shù) UrlDecode
js中escape對應的C#解碼函數(shù) System.Web.HttpUtility.UrlDecode(s),使用過程中有以下幾點需要注意2012-12-12Web Inspector:關于在 Sublime Text 中調(diào)試Js的介紹
本篇文章小編將為大家介紹,Web Inspector:關于在 Sublime Text 中調(diào)試Js的介紹。需要的朋友可以參考一下2013-04-04JavaScript開發(fā)規(guī)范要求(規(guī)范化代碼)
作為一名開發(fā)人員(WEB前端JavaScript開發(fā)),不規(guī)范的開發(fā)不僅使日后代碼維護變的困難,同時也不利于團隊的合作,通常還會帶來代碼安全以及執(zhí)行效率上的問題。2010-08-08window.location.href的用法(動態(tài)輸出跳轉)
無論在靜態(tài)頁面還是動態(tài)輸出頁面中window.location.href都是不錯的用了跳轉的實現(xiàn)方案2014-08-08