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

再探JavaScript作用域

 更新時間:2014年09月24日 09:01:14   投稿:junjie  
這篇文章主要介紹了再探JavaScript作用域,本文用簡潔的語言和直觀的測試結果圖片給大家講解JavaScript的作用域,需要的朋友可以參考下

黃金守則第一條:

js沒有塊級作用域(你可以自己閉包或其他方法實現(xiàn)),只有函數(shù)級作用域,函數(shù)外面的變量函數(shù)里面可以找到,函數(shù)里面的變量外面找不到。

first try:

這是為什么呢??

var a = 10;
function aaa(){//step-4
	alert(a);//step-5->執(zhí)行alert,此時只能找到外面的a=10故彈框10
}
function bbb(){//step-2
	var a = 20;
	aaa();//step-3
}
//定義了函數(shù)沒啥用,調(diào)用才是真格的所以這里是step-1
bbb();//step-1

其實原理大家都懂,應該就是易錯而已,萬變不離其綜。

second try:

這是為什么呢? 因為給a賦值b的時候,b還沒有定義,所以a是undefined,b是10.

黃金守則第二條:

變量的查找是就近原則,去尋找var定義的變量,當就近沒有找到的時候就去查找外層。

look:

這是為什么呢、? 這里面有兩個原因,一是預解析,二是就近查找。

var a=10;
function aaa(){
	alert(a);//undefined,查找a的時候會現(xiàn)在函數(shù)內(nèi)查找,由于預解析的作用,此時的a是undefined,因此永遠不會去查找外面的10了
	var a = 20;

	/*預解析
	var a
	alert(a);
	var a = 20;*/

}
aaa();

attention:

這個吧,就驗證了第二條,雖然是就近原則,但是是就近找var聲明的變量,這個是因為沒有var聲明的變量是全局的,這里只是修改了a的值。所以上面就是因為在函數(shù)內(nèi)沒找到var的a,于是到外面去找了,一找就找到了,于是a就alert出10了;不過沒錯的是a=20后,a確實為20了,只不過alert的時候還沒有執(zhí)行到那~~

看吧~

下面這個例子,更加驗證了js的函數(shù)作用域 而已:

這是因為在alert(a)的時候,bbb函數(shù)中的a確實為20 ,可是它對于這時的alert(a)這句話來說是局部的,alert(a)根本找不到bbb函數(shù)中的a,所以在aaa函數(shù)中它找不到a,于是乎去外面找,一找,就找到了10。

黃金守則第三條:

當參數(shù)跟局部變量重名時,優(yōu)先級是等同的。

例:

還有:傳參時,基本類型傳值,引用類型傳引用。(但是重新賦值之后就不是這樣了喔)

var a = 5;
var b = a;
b +=3;
alert(a);//5

var a = [1,2,3];
var b=a;
b.push(4);
alert(a);//[1,2,3,4];

上面代碼沒有問題,但是下面就不一樣啦。

因為b被重新賦值了,不指向a了。

此外,參數(shù)與變量的作用域是相似的:

對比上下這兩個:

上面是參數(shù)是基本類型,只傳了值進去,下面的傳個引用類型:(同樣也包含重新賦值的情況)

相關文章

  • uni-app自定義組件components導入失敗或頁面不顯示文本等解決方法

    uni-app自定義組件components導入失敗或頁面不顯示文本等解決方法

    這篇文章主要給大家介紹了關于uni-app自定義組件components導入失敗或頁面不顯示文本等的解決方法,眾所周知Uni-app支持使用自定義組件,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • javascript數(shù)組里的27個方法總合詳解

    javascript數(shù)組里的27個方法總合詳解

    這篇文章主要為大家詳細介紹了javascript數(shù)組里的方法27個總合,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Javascript & DHTML 實例編程(教程)DOM基礎和基本API

    Javascript & DHTML 實例編程(教程)DOM基礎和基本API

    Javascript & DHTML 實例編程(教程)DOM基礎和基本API...
    2007-06-06
  • 深入理解JavaScript中的對象復制(Object Clone)

    深入理解JavaScript中的對象復制(Object Clone)

    下面小編就為大家?guī)硪黄钊肜斫釰avaScript中的對象復制(Object Clone)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • Javascript基礎知識詳解

    Javascript基礎知識詳解

    本篇適合javascript新手或者學了前端一段時間,對js概念不清晰的同學。本文將講述幾點對于初學者遇到的javascript的坑,相信對javascript基礎薄弱的同學,可以加深對javascript的理解
    2021-10-10
  • JavaScript中函數(shù)的常用寫法及調(diào)用方法

    JavaScript中函數(shù)的常用寫法及調(diào)用方法

    這篇文章介紹了JavaScript中函數(shù)的常用寫法及調(diào)用方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 深入理解JavaScript系列(48):對象創(chuàng)建模式(下篇)

    深入理解JavaScript系列(48):對象創(chuàng)建模式(下篇)

    這篇文章主要介紹了深入理解JavaScript系列(48):對象創(chuàng)建模式(下篇),本篇主要是介紹創(chuàng)建對象方面的模式的下篇,利用各種技巧可以極大地避免了錯誤或者可以編寫出非常精簡的代碼,需要的朋友可以參考下
    2015-03-03
  • Array對象方法參考

    Array對象方法參考

    Array對象方法參考...
    2006-10-10
  • Javascript基礎教程之變量

    Javascript基礎教程之變量

    大家都知道javascript是可以隱式聲名變量的。但要注意,隱式聲名變量總是被創(chuàng)建為全局變量??匆韵麓a,情愿javascript語言強制聲明變量。建議大家一定要var聲明變量。
    2015-01-01
  • Javascript之BOM(window對象)詳解

    Javascript之BOM(window對象)詳解

    下面小編就為大家?guī)硪黄狫avascript之BOM(window對象)詳解。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05

最新評論

甘洛县| 遵义县| 灵璧县| 濮阳县| 乌什县| 奇台县| 清原| 镇原县| 永嘉县| 罗田县| 汾西县| 安龙县| 香河县| 岐山县| 崇信县| 天柱县| 乌兰县| 屏南县| 修文县| 中西区| 启东市| 政和县| 利津县| 日土县| 亚东县| 涿州市| 苗栗县| 礼泉县| 阜平县| 通州区| 滁州市| 普兰店市| 久治县| 岫岩| 波密县| 噶尔县| 石门县| 萝北县| 英吉沙县| 历史| 华蓥市|