一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

JavaScript作用域

 流楚丶格念 2022-01-14

文章目錄

作用域

作用域:變量可以起作用的范圍

全局變量和局部變量

  • 全局變量

    在任何地方都可以訪問到的變量就是全局變量,對應(yīng)全局作用域

  • 局部變量

    只在固定的代碼片段內(nèi)可訪問到的變量,最常見的例如函數(shù)內(nèi)部。對應(yīng)局部作用域(函數(shù)作用域)

不使用var聲明的變量是全局變量,不推薦使用。 變量退出作用域之后會銷毀,全局變量關(guān)閉網(wǎng)頁或瀏覽器才會銷毀

塊級作用域

任何一對花括號({和})中的語句集都屬于一個塊,在這之中定義的所有變量在代碼塊外都是不可見的,我們稱之為塊級作用域。
在es5之前沒有塊級作用域的的概念,只有函數(shù)作用域,現(xiàn)階段可以認為JavaScript沒有塊級作用域

詞法作用域

變量的作用域是在定義時決定而不是執(zhí)行時決定,也就是說詞法作用域取決于源碼,通過靜態(tài)分析就能確定,因此詞法作用域也叫做靜態(tài)作用域。

在 js 中詞法作用域規(guī)則:

  • 函數(shù)允許訪問函數(shù)外的數(shù)據(jù).
  • 整個代碼結(jié)構(gòu)中只有函數(shù)可以限定作用域.
  • 作用域規(guī)則首先使用提升規(guī)則分析
  • 如果當前作用規(guī)則中有名字了, 就不考慮外面的名字
var num = 123;
function foo() {
  console.log( num );
}
foo();

if ( false ) {
    var num = 123;
}
console.log( num ); // undefiend

作用域鏈

只有函數(shù)可以制造作用域結(jié)構(gòu), 那么只要是代碼,就至少有一個作用域, 即全局作用域。凡是代碼中有函數(shù),那么這個函數(shù)就構(gòu)成另一個作用域。如果函數(shù)中還有函數(shù),那么在這個作用域中就又可以誕生一個作用域。

將這樣的所有的作用域列出來,可以有一個結(jié)構(gòu): 函數(shù)內(nèi)指向函數(shù)外的鏈式結(jié)構(gòu)。就稱作作用域鏈。

// 案例1:
function f1() {
    function f2() {
    }
}

var num = 456;
function f3() {
    function f4() {    
    }
}

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FFZMKk8F-1595143612787)(media/06-1.png)]

// 案例2
function f1() {
    var num = 123;
    function f2() {
        console.log( num );
    }
    f2();
}
var num = 456;
f1();

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-utDqzrUB-1595143612793)(media/06-2.png)]

代碼示例

在這里插入圖片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>$永遠的24k純帥$</title>
  <script>


    var num=10;
    function f1() {
      var num=20;
      function f2() {
        var num=30;
        function f3() {
          //var num=50;
          console.log(num);
        }
        f3();
      }
      f2();
    }
    f1();
  </script>
</head>
<body>


</body>
</html>

總結(jié)

* 全局變量:聲明的變量是使用var聲明的,那么這個變量就是全局變量,全局變量可以在頁面的任何位置使用
* 除了函數(shù)以外,其他的任何位置定義的變量都是全局變量
* 局部變量:在函數(shù)內(nèi)部定義的變量,是局部變量,外面不能使用
* 全局變量,如果頁面不關(guān)閉,那么就不會釋放,就會占空間,消耗內(nèi)存
*
* 全局作用域:全局變量的使用范圍
* 局部作用域:局部變量的使用范圍
*
* 塊級作用域:一對大括號就可以看成是一塊,在這塊區(qū)域中定義的變量,只能在這個區(qū)域中使用,但是在js中在這個塊級作用域中定義的變量,外面也能使用;
* 說明:js沒有塊級作用域,只有函數(shù)除外
*
* 隱式全局變量:聲明的變量沒有var,就叫隱式全局變量
* 全局變量是不能被刪除的,隱式全局變量是可以被刪除的
* 定義變量使用var是不會被刪除的,沒有var是可以刪除的

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产乱淫av一区二区三区| 日本黄色录像韩国黄色录像| 日韩欧美一区二区黄色| 国产欧美日韩视频91| 国产精品人妻熟女毛片av久| 亚洲深夜精品福利一区| 老熟妇乱视频一区二区| 嫩呦国产一区二区三区av| 夜色福利久久精品福利| 久久99精品日韩人妻| 激情综合五月开心久久| 国产成人免费高潮激情电| 日韩国产亚洲欧美激情| 暴力三级a特黄在线观看| 日韩欧美国产高清在线| 国产欧美日产中文一区| 欧美亚洲三级视频在线观看| 国产午夜精品在线免费看| 在线中文字幕亚洲欧美一区 | 中文字幕五月婷婷免费| 高清欧美大片免费在线观看| 亚洲内射人妻一区二区| 五月的丁香婷婷综合网| 麻豆印象传媒在线观看| 国产精品亚洲精品亚洲| 黄片三级免费在线观看| 欧美日韩亚洲国产综合网| 视频一区二区三区自拍偷| 草草草草在线观看视频| 超碰在线免费公开中国黄片| 日本午夜乱色视频在线观看| 无套内射美女视频免费在线观看| 亚洲精品中文字幕熟女| 日韩免费成人福利在线| 午夜亚洲少妇福利诱惑| 日韩精品综合福利在线观看| 精品少妇一区二区视频| 欧美亚洲国产日韩一区二区| 午夜小视频成人免费看| 大尺度激情福利视频在线观看| 老司机这里只有精品视频|