欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析JavaScript聲明變量

 更新時間:2015年12月21日 09:12:39   作者:jerrylsxu  
JavaScript的變量聲明語句無論出現(xiàn)在何處,都會先于其他代碼首先被執(zhí)行,本文給大家介紹javascript聲明變量相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧

JavaScript的變量聲明語句無論出現(xiàn)在何處,都會先于其他代碼首先被執(zhí)行。使用var關(guān)鍵詞聲明變量的作用域是當(dāng)前的執(zhí)行上下文,有可能是外圍函數(shù),或者,當(dāng)變量聲明在函數(shù)體之外時,則為全局變量。

定義在函數(shù)體外的都屬于全局變量,定義在函數(shù)體內(nèi)的屬于局部變量。這里的定義是指通過var聲明的。

JavaScript有隱含的全局概念,意味著你不聲明的任何變量都會成為一個全局對象屬性。例如:

function test(){
myname = "huming";
alert(myname);
}
test();  // "huming"
alert(myname);  //"huming" 

兩個結(jié)果是一樣的,說明myname是一個全局變量。

那么,隱式全局變量和明確定義的全局變量有沒有區(qū)別呢。。答案肯定是有的,看下面的例子:

// 定義三個全局變量
var global_test = ;
global_test = ; // 反面教材
(function () {
global_test = ; // 反面教材
}());
// 試圖刪除
delete global_test; // false
delete global_test; // true
delete global_test; // true
// 測試該刪除
alert(typeof global_test); // "number"
alert(typeof global_test); // "undefined"
alert(typeof global_test); // "undefined" 

由上面的例子可以看出:在函數(shù)之外通過var定義的global_test1不能被刪除,而沒有經(jīng)過var定義的global_test2和global_test3都被刪除了(無論是否是在函數(shù)體內(nèi)創(chuàng)建)。

總結(jié)來說,在函數(shù)體外通過var聲明的全局變量不能被刪除,而隱式全局變量是可以刪除的。

這里要注意了:JavaScript有一種行為叫做“hoisting”(懸置/置頂解析/預(yù)解析)。

我們通過一個例子來說明:

var myname = "huming"; //聲明全局變量
function test() {
alert(myname);
var myname = "local_huming";
alert(myname);
}
test();

你猜兩次alert的內(nèi)容一致嗎??顯然不一致,一致還用說嗎。。實際輸出是:"undefined", "local_huming"。

上面的例子等同于

var myname = "huming"; //聲明全局變量
function test() {
  var myname;
  alert(maname);<br>  myname = "local_huming";
  alert(myname); // "local"
}
test(); 

第一次alert輸出的myname并不是你以為的全局變量,而是和它在一個作用域(一個函數(shù)體)內(nèi)的局部變量。雖然它還沒有被聲明,但被當(dāng)作是聲明了。這就是所謂的“hoisting”。

這樣應(yīng)該就明白了吧。當(dāng)你在函數(shù)體中使用了一個變量,又在之后重新聲明的話,就可能產(chǎn)生錯誤。

書寫規(guī)范:

function test() {
var a = ,
b = ,
c = a + b,
d = {},
e,
f;
// function body...
}

好處在于:

1、所有局部變量都定義在函數(shù)開始,方便查找;

2、防止變量在定義之前使用的邏輯錯誤。

在javascript中,一個變量名(name)有四種方式進入作用域(scope)中

語言內(nèi)置,所有的作用域中都有this和arguments關(guān)鍵字

形式參數(shù),函數(shù)的參數(shù)在整個作用域中都是有效的

函數(shù)聲明

變量聲明

上面列出的四種順序也正是由高到底的優(yōu)先級的順序,一旦一個變量名已經(jīng)聲明了,那么它就不可能被其他更低優(yōu)先級的變量聲明形式所覆蓋。

相關(guān)文章

  • JavaScript實現(xiàn)大數(shù)的運算

    JavaScript實現(xiàn)大數(shù)的運算

    js的'MAX_SAFE_INTEGER'是9007199254740991,而'MIN_SAFE_INTEGER'為-9007199254740991,那么如何實現(xiàn)一些特別大的數(shù)目相加?今天我們就來探討下
    2014-11-11
  • document.forms[].submit()使用介紹

    document.forms[].submit()使用介紹

    這篇文章主要介紹了document.forms[].submit()使用,需要的朋友可以參考下
    2014-02-02
  • JS實現(xiàn)加載時鎖定HTML頁面元素的方法

    JS實現(xiàn)加載時鎖定HTML頁面元素的方法

    這篇文章主要介紹了JS實現(xiàn)加載時鎖定HTML頁面元素的方法,涉及javascript針對頁面元素的遍歷與屬性操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • JavaScript中的異步能省掉await嗎?

    JavaScript中的異步能省掉await嗎?

    這篇文章主要介紹了JavaScript中的異步能省掉await嗎?一直以來,困擾我的一個問題是JavaScript中,能否實現(xiàn)不帶await的異步。今天我終于把這個問題想通了然后分享給大家,希望對大家的學(xué)習(xí)過程有所幫助
    2021-12-12
  • 初步使用bootstrap快速創(chuàng)建頁面

    初步使用bootstrap快速創(chuàng)建頁面

    初步嘗試使用Express搭建了一個Web框架,那么接下來就是要在該框架下寫上自己的頁面,快速創(chuàng)建頁面這里選擇了bootstrap前端框架,通過它即使你不太懂前端設(shè)計,寫出來的頁面也不會太難看,感興趣的小伙伴們可以參考一下
    2016-03-03
  • TypeScript內(nèi)置工具類型快速入門運用

    TypeScript內(nèi)置工具類型快速入門運用

    TypeScript 中內(nèi)置了很多工具類型,我們無需導(dǎo)入,可以直接使用。 其中的很多都是比較常用的,接下來我們根據(jù)使用范圍來一一介紹,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-03-03
  • js實現(xiàn)圖片淡入淡出效果

    js實現(xiàn)圖片淡入淡出效果

    這篇文章主要為大家詳細介紹了js實現(xiàn)圖片淡入淡出效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JavaScript String 對象常用方法總結(jié)

    JavaScript String 對象常用方法總結(jié)

    下面小編就為大家?guī)硪黄狫avaScript String 對象常用方法總結(jié)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考
    2016-04-04
  • JS獲得QQ號碼的昵稱,頭像,生日的簡單實例

    JS獲得QQ號碼的昵稱,頭像,生日的簡單實例

    這篇文章主要介紹了JS獲得QQ號碼的昵稱,頭像,生日的簡單實例,有需要的朋友可以參考一下
    2013-12-12
  • JavaScript純前端實現(xiàn)在線GIF壓縮

    JavaScript純前端實現(xiàn)在線GIF壓縮

    這篇文章主要為大家詳細介紹了如何利用JavaScript純前端實現(xiàn)在線GIF壓縮工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03

最新評論