淺談JavaScript中變量和函數(shù)聲明的提升
現(xiàn)象:
1. 在JavaScript中變量和函數(shù)的聲明會提升到最頂部執(zhí)行。
2. 函數(shù)的提升高于變量的提升。
3. 函數(shù)內(nèi)部如果用var聲明了相同名稱的外部變量,函數(shù)將不再向上尋找。
4. 匿名函數(shù)不會提升。
5. 不同<script>塊中的函數(shù)互不影響。
例子:
函數(shù)聲明提升高于變量聲明
//同時聲明變量a和函數(shù)a
var a;
function a() {}
alert(typeof a); //顯示的是"function",初步證明function的優(yōu)先級高于var。
//先聲明函數(shù)后聲明變量,證明上邊的例子不是function覆蓋了變量
function a() {}
var a;
alert(typeof a); //顯示的仍是"function",而不是"undefined",即function的優(yōu)先級高于var。
//聲明了變量的同時賦值
function a() {}
var a = 1;
alert(typeof a); //number,此時不是function了。
//說明:"var a=1"相當于"var a;a=1",即先聲明,后賦值,"a=1"相當于把a重新賦值了,自然就是number!
函數(shù)內(nèi)部用var定義了和外部相同的變量,函數(shù)將不再向上找外部的變量
var value = 'hello';
function show() {
alert(value);
if (!value) {
var value = 'function';
}
alert(value);
}
show() //此處調(diào)用函數(shù)依次彈出 "undefined", "function"
//上例相當于var value = 'hello';
function show() {
var value; //注意這行
alert(value);
if (!value) {
value = 'function'; //這行去掉var
}
alert(value);
}
show()//1.如果上列中show內(nèi)部定義value未用var,則會用到外部的變量,彈出"hello", "hello"。
//2.如果函數(shù)內(nèi)部未定義value,也能獲取到外部的value值。
匿名函數(shù)不會向上提升
getName()
var getName = function () {
alert('closule')
}
function getName() {
alert('function')
}
getName()
//上邊的代碼相當于
function getName() { //函數(shù)向上提升
alert('function')
}
getName()
var getName = function () {
alert('closule')
}
getName()
//代碼執(zhí)行分別彈出 "function", "closule"
不同<script>塊中的函數(shù)互不影響
<script>
getName()
var getName = function () {
alert('closule')
}
<script>
<script>
function getName() {
alert('function')
}
<script>
//代碼執(zhí)行報錯:TypeError: getName is not a function
//因為第一個<script>塊中g(shù)etName()函數(shù)未定義,匿名函數(shù)又不會向上提升
以上這篇淺談JavaScript中變量和函數(shù)聲明的提升就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
理解javascript中try...catch...finally
這篇文章主要幫助大家理解javascript中try...catch...finally,從淺入深,一步步掌握javascript中try...catch...finally的使用方法,感興趣的小伙伴們可以參考一下2015-12-12
封裝運動框架實戰(zhàn)左右與上下滑動的焦點輪播圖(實例)
下面小編就為大家?guī)硪黄庋b運動框架實戰(zhàn)左右與上下滑動的焦點輪播圖(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
購物車前端開發(fā)(jQuery和bootstrap3)
針對購物車的操作,進行產(chǎn)品數(shù)量的增加減少,刪除購物車中產(chǎn)品項,本文使用JQuery1.11和bootstrap3進行購物車開發(fā),感興趣的小伙伴們2016-08-08

