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

JavaScript基礎之作用域

 更新時間:2021年11月12日 15:41:59   作者:小豬弟  
這篇文章主要介紹了如何理解JavaScript中的作用域,幫助大家更好的學習JavaScript,感興趣的朋友可以了解下

再聊AO和BO之前還需要了解作用域的概念,這樣方便后面了解很多東西,比如this指向等。

作用域

作用域(Scope)簡單的說就是變量,函數(shù)和對象定義后其可用的范圍。

console.log(a)
{
    var a=1;
}
function test(){
     var b=2;
}

在這里插入圖片描述

可以看出在外面無法使用變量b??梢钥闯鲎饔糜蚩梢员Wo數(shù)據(jù)不會被外部隨意訪問,以及修改。簡單可以看出作用域可以相互隔離彼此的變量,也就是說在不同的作用域下的同名變量不會沖突。

而作用域最重要常用的是全局作用域和函數(shù)作用域。不過ES6之后因為let 和const關鍵字的出現(xiàn)又引如了一個塊級作用域。

全局作用域

全局作用域簡單說就是所有域都可以訪問器域下變量以及方法對象。

var a="全局1";
 function test(){
    b="沒有帶var,隱式轉變?yōu)槿肿兞?;
    window.c="直接將變量c作為window下也會變?nèi)?;
    var d="非全局作用域";
 }
 #第一步 執(zhí)行test()
test()  #這樣才會將方法內(nèi)的變量進行定義以及賦值
#第二步
console.log(a)
console.log(b)
console.log(c)
console.log(d)

在這里插入圖片描述

一般來說window的屬性都是全局變量,而window.c 其實式將c作為一個window的屬性來對待。注意一點在聲明變量的時候不要帶var ,最好是帶著var,這樣不會將其提升成全局變量,導致數(shù)據(jù)會被相互污染。

補充說一句,test這個方法也是全局域下的方法。

function test(){
    var a= function(){
        console.log("字面量的方法")
    }
    b=function(){
        console.log("不帶var字面量的方法")
    } 
   function test1(){
       console.log("普通聲明方法")
   }
     
}
 

在這里插入圖片描述

這個可以看出字面量聲明的方法,類似一個可以看成一個將函數(shù)賦值給一個變量,將其作為一個變量來對待。前面預編譯的時候也演示過了。

函數(shù)作用域

函數(shù)作用域與全局作用域相反,其不是為所有的地方用,而是在一定的范圍用,一般聲明的變量,只在函數(shù)內(nèi)部使用。

function test(){
     var a="非全局作用域";
     console.log(a)
}

現(xiàn)在又有了一個問題,全局方法里面可以用函數(shù)作用域內(nèi)部的變量。那么函數(shù)是內(nèi)部是否可以有其下面的函數(shù)生成的函數(shù)作用域呢?以及其變量是否可以相互用?

function test(){
     var a="test方法作用域";
    function test1(){
         var b="test1方法作用域";
        console.log("a的值=",a);
    }
    # 調(diào)用函數(shù)內(nèi)部函數(shù)
    test1();
     console.log("b的值=",b);
 }

在這里插入圖片描述

這個地方可以看出作用域是分層的,內(nèi)層作用域可以訪問外層作用域的變量,外部訪問不了內(nèi)部的變量。

if,switch,for ,while

條件語句和邏輯循環(huán),**它們不是函數(shù)同樣也不像函數(shù),也不會創(chuàng)建一個新的作用域。**其塊定義的變量將保留在它們存在的作用域中。

function test(a){
    if(a>1){
        var b=13;
    }else{
       var b=1;  
    }
    console.log(b);
}

在這里插入圖片描述

所以在使用條件語句和邏輯循環(huán)的時候,盡可能不要再全局作用域下使用。因為其方法體中的變量會影響其他的數(shù)據(jù)。

塊作用域

塊作用域的出現(xiàn),一般需要依賴兩個關鍵字let或const之一,不然就不會存在這個塊作用域。

在這里插入圖片描述

function test(a){
    const b="23";
    if (a>2){
        const c=3
        console.log("第一個人if---c-----",c)
    }
    if (a>1){
        console.log("第二個人if----b----",b)
        console.log("第二個人if----c----",c)
    }
     
}

在這里插入圖片描述

可以看出如果有關鍵字let和const后,其變量的范圍就是在其聲明的那一對花括號內(nèi)。所以第一個if中的c變量再第二個if的里面無法取得。當然還是遵守:內(nèi)層作用域可以訪問外層作用域的變量。

了解let和const看前一篇:地址

作用域鏈

這個看似很神奇的概念,簡單的說就是作用域內(nèi)有就直接用,沒有找上一層,如果都沒有,找到全局就結束。

var a=1
var b=3
function test(){
    var a=2
    console.log("a的值",a);
    console.log("b的值",b);
}
 

在這里插入圖片描述

多嘴說一下,作用域鏈其實和原型鏈的尋找邏輯一樣,后面繼續(xù)聊。

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • JSON對象 詳解及實例代碼

    JSON對象 詳解及實例代碼

    這篇文章主要介紹了JSON對象 詳解的相關資料,并附簡單實例代碼,幫助大家學習參考,需要的朋友可以參考下
    2016-10-10
  • Javascript學習筆記二 之 變量

    Javascript學習筆記二 之 變量

    上面描述了數(shù)據(jù)類型,學習完數(shù)據(jù)類型就不得不提到變量。
    2010-12-12
  • JavaScript中的replace()方法使用詳解

    JavaScript中的replace()方法使用詳解

    這篇文章主要介紹了JavaScript中的replace()方法使用詳解,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • JS 全屏和退出全屏詳解及實例代碼

    JS 全屏和退出全屏詳解及實例代碼

    退出全屏效果與全屏效果我們可能在看視頻網(wǎng)站時看到多,這里來為各位介紹利用js全屏和退出全屏代碼范例吧,,需要的朋友可以參考下
    2016-11-11
  • JavaScript中構造函數(shù)與原型鏈之間的關系詳解

    JavaScript中構造函數(shù)與原型鏈之間的關系詳解

    在本篇文章里小編給大家分享了關于JavaScript中構造函數(shù)與原型鏈之間的關系相關知識點,需要的朋友們學習下。
    2019-02-02
  • js常用的鍵盤事件有哪些(用法示例)_鍵碼keyCode對照表

    js常用的鍵盤事件有哪些(用法示例)_鍵碼keyCode對照表

    用戶按下鍵盤上的鍵,首先會觸發(fā)keydown事件,然后是keypress事件,最后是keyup事件。其中,keydown和keypress事件是在文本框發(fā)生變化之前被觸發(fā);而keyup在文本框發(fā)生變化之后被觸發(fā)。如果用戶按下一個鍵不放,就會重復觸發(fā)keydown和keypress事件。
    2023-02-02
  • JavaScript實現(xiàn)關鍵字高亮功能

    JavaScript實現(xiàn)關鍵字高亮功能

    關鍵詞高亮技術各大CMS基本上都有,但基本都是后端代碼來實現(xiàn)的,今天我們探討下如何使用javascript來實現(xiàn)代碼高亮技術。
    2014-11-11
  • javascript學習筆記(十九) 節(jié)點的操作實現(xiàn)代碼

    javascript學習筆記(十九) 節(jié)點的操作實現(xiàn)代碼

    javascript學習筆記之節(jié)點的操作實現(xiàn)代碼,包括節(jié)點的創(chuàng)建、添加、移除、替換、復制
    2012-06-06
  • PHP守護進程實例

    PHP守護進程實例

    這篇文章主要介紹了PHP守護進程實例,php也是可以直接進行守護進程的啟動與終止的,相對于shell來說會簡單很多,需要的朋友可以參考下
    2015-03-03
  • 老生常談JavaScript數(shù)組的用法

    老生常談JavaScript數(shù)組的用法

    下面小編就為大家?guī)硪黄仙U凧avaScript數(shù)組的用法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06

最新評論

清镇市| 广汉市| 九江市| 平远县| 绍兴市| 策勒县| 铜鼓县| 宜黄县| 刚察县| 荥阳市| 搜索| 阿拉尔市| 靖西县| 武义县| 和田县| 新泰市| 迁西县| 沙洋县| 沙湾县| 虎林市| 德阳市| 亳州市| 饶平县| 伊宁市| 邯郸县| 绥滨县| 罗甸县| 高陵县| 枣强县| 开原市| 宿松县| 玉环县| 当涂县| 江西省| 隆回县| 内黄县| 永福县| 东兰县| 沈丘县| 白山市| 时尚|