最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析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繼承你到底了解多少

    對于JavaScript繼承你到底了解多少

    js的繼承機制不同于傳統(tǒng)的面向?qū)ο笳Z言,采用原型鏈實現(xiàn)繼承,基本思想是利用原型讓一個引用類型繼承另一個引用類型的屬性和方法,下面這篇文章主要給大家介紹了關(guān)于JS繼承的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 微信小程序?qū)崿F(xiàn)頁面監(jiān)聽自定義組件的觸發(fā)事件

    微信小程序?qū)崿F(xiàn)頁面監(jiān)聽自定義組件的觸發(fā)事件

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)頁面監(jiān)聽自定義組件的觸發(fā)事件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • JavaScript之DOM插入更新刪除_動力節(jié)點Java學(xué)院整理

    JavaScript之DOM插入更新刪除_動力節(jié)點Java學(xué)院整理

    這篇文章主要為大家詳細介紹了JavaScript之DOM插入更新刪除,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • javascript最短的拖動代碼[兼容FF]

    javascript最短的拖動代碼[兼容FF]

    javascript最短的拖動代碼[兼容FF]...
    2007-10-10
  • layui動態(tài)表頭的實現(xiàn)代碼

    layui動態(tài)表頭的實現(xiàn)代碼

    這篇文章主要介紹了layui動態(tài)表頭的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • js 文件引入實現(xiàn)代碼

    js 文件引入實現(xiàn)代碼

    項目前端的文件和后臺開發(fā)分離,只要后臺開發(fā)更新svn前端的js,css文件都會更新,以前引用的是一個js文件如AA.js,由于想在項目中引用jquery庫,如果在每個文件的頭部都引讓他們從新寫入這個jq文件不太可能
    2010-04-04
  • js判斷上傳文件類型判斷FileUpload文件類型代碼

    js判斷上傳文件類型判斷FileUpload文件類型代碼

    這篇文章主要介紹了js判斷上傳文件類型判斷FileUpload文件類型代碼,需要的朋友可以參考下
    2014-05-05
  • 基于javascript的無縫滾動動畫實現(xiàn)2

    基于javascript的無縫滾動動畫實現(xiàn)2

    這篇文章主要介紹了基于javascript的無縫滾動動畫實現(xiàn)2,文章通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Three.js利用頂點繪制立方體的方法詳解

    Three.js利用頂點繪制立方體的方法詳解

    最近在學(xué)習(xí)three.js,將學(xué)習(xí)中遇到的知識點總結(jié)分享出來,下面這篇文章主要給大家介紹了關(guān)于Three.js利用頂點繪制立方體的方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • toString.call()通用的判斷數(shù)據(jù)類型方法示例

    toString.call()通用的判斷數(shù)據(jù)類型方法示例

    這篇文章主要給大家介紹了關(guān)于toString.call()通用的判斷數(shù)據(jù)類型方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論

三门县| 秦安县| 山西省| 余姚市| 清水县| 方城县| 沧州市| 马龙县| 贞丰县| 博白县| 安宁市| 乐平市| 康平县| 司法| 吉林省| 永丰县| 宜宾县| 寿宁县| 岱山县| 黄石市| 平利县| 炉霍县| 阳朔县| 乌鲁木齐市| 无为县| 鹤峰县| 泽州县| 故城县| 土默特左旗| 乌审旗| 吉木萨尔县| 肥东县| 阳高县| 昭苏县| 宜州市| 葵青区| 威远县| 行唐县| 西充县| 科技| 姜堰市|