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

JavaScript靜態(tài)作用域和動態(tài)作用域實例詳解

 更新時間:2019年06月17日 09:41:29   作者:萌面大蝦  
這篇文章主要介紹了JavaScript靜態(tài)作用域和動態(tài)作用域的實例代碼,本文通過文字實例代碼相結合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

靜態(tài)作用域指的是一段代碼,在它執(zhí)行之前就已經確定了它的作用域,簡單來說就是在執(zhí)行之前就確定了它可以應用哪些地方的作用域(變量)。

動態(tài)作用域–函數的作用域是在函數調用的時候才決定的

JavaScript采用的是詞法作用域即靜態(tài)作用域;

// 靜態(tài)作用域:
var a = 10;
function fn() {
  var b = 1;
  console.log(a + b);
}
fn(); // 11

在創(chuàng)建fn函數時的時候就已經確定了它可以作用哪些變量,如果函數fn里面有變量a就直接操作變量a,

如果沒有就往上一級查找,這就是靜態(tài)作用域

// 動態(tài)作用域:
function foo() {
  console.log(a);
}
function bar() {
  var a = 3;
  foo();
}
var a = 2;
bar(); // 2;

bar 調用,bar里面foo被調用,foo函數需要查找變量a,由于JavaScript是詞法作用域(即靜態(tài)作用域),foo被解析時在全局作用域.

所以只能在全局作用域中找a,輸出結果為2,而非bar作用域中的a。如果js采用的時動態(tài)作用域,那么foo在bar中調用,就會先在bar中查詢a,輸出為3。

ps:下面看下JavaScript之靜態(tài)作用域

作用域是指代碼中定義變量的區(qū)域。作用域規(guī)定了如何查找變量,也就是確定當前代碼對變量的訪問權限。

靜態(tài)作用域和動態(tài)作用域

靜態(tài)作用域是指函數的作用域在函數定義時就已經確定了,而動態(tài)作用域是指函數的作用域在運行時才確定。下面是一段代碼:

var value = 1;
function foo() {
    console.log(value);
}
function bar() {
    var value = 2;
    foo();
}
bar();

如果這段代碼使用靜態(tài)作用域的方式訪問變量,那么執(zhí)行foo()函數時,首先查看函數內是否存在局部變量value的定義,如果沒有,則查找之前的代碼,也就是var value = 1;,查找到了value的定義為1,因此輸出1。
如果這段代碼使用動態(tài)作用域的方式訪問變量,那么執(zhí)行foo()函數時,首先依舊從函數內部查找是否存在局部變量value的定義,如果沒有,那么從調用方bar()函數的作用域中查找,找到了var value = 2;,因此輸出2。
JavaScript采用靜態(tài)作用域的方式訪問變量,因此這個例子輸出為1。

常見的采用動態(tài)作用域的語言是bash。

相關文章

  • 微信小程序判斷用戶是否需要再次授權獲取個人信息

    微信小程序判斷用戶是否需要再次授權獲取個人信息

    這篇文章主要介紹了微信小程序判斷用戶是否需要再次授權獲取個人信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • JS實現隨機數生成算法示例代碼

    JS實現隨機數生成算法示例代碼

    JS實現隨機數生成算法的方法有很多,本文為大家介紹一個比較不錯的方法,代碼如下,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-08-08
  • JS實現簡單的天數計算器完整實例

    JS實現簡單的天數計算器完整實例

    這篇文章主要介紹了JS實現簡單的天數計算器,結合完整實例形式分析了javascript針對日期的獲取及天數運算相關操作技巧,需要的朋友可以參考下
    2017-04-04
  • Bootstrap下拉菜單效果實例代碼分享

    Bootstrap下拉菜單效果實例代碼分享

    這篇文章主要為大家詳細介紹了Bootstrap下拉菜單效果實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • JavaScript遍歷查找數組中最大值與最小值的方法示例

    JavaScript遍歷查找數組中最大值與最小值的方法示例

    這篇文章主要介紹了JavaScript遍歷查找數組中最大值與最小值的方法,結合實例形式分析了javascript基于數組遍歷、判斷實現最大值與最小值計算的相關操作技巧,需要的朋友可以參考下
    2019-05-05
  • js刪除所有的cookie的代碼

    js刪除所有的cookie的代碼

    有時候需要刪除網站的cookies,一個一個太麻煩,這個可以批量的刪除所有的cookies,需要的朋友可以參考下。
    2010-11-11
  • js中的面向對象之對象常見創(chuàng)建方法詳解

    js中的面向對象之對象常見創(chuàng)建方法詳解

    這篇文章主要介紹了js中的面向對象之對象常見創(chuàng)建方法,結合實例形式較為詳細的分析了JavaScript創(chuàng)建對象的四種常用方式,需要的朋友可以參考下
    2019-12-12
  • js Array對象的擴展函數代碼

    js Array對象的擴展函數代碼

    有時候我們需要對js的array對象擴展一些功能,這里簡單介紹下,方便需要的朋友
    2013-04-04
  • Three.js利用dat.GUI如何簡化試驗流程詳解

    Three.js利用dat.GUI如何簡化試驗流程詳解

    dat.gui可以方便地向場景中添加控制條,隨時調整參數。下面這篇文章主要給大家介紹了關于Three.js利用dat.GUI如何簡化試驗流程的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • 淺析JavaScript中的特殊數據類型

    淺析JavaScript中的特殊數據類型

    在JavaScript中,有6大數據類型,分別包括string,number,boolean,undefined,null 和 object。下面通過通過本文給大家介紹JavaScript中的特殊數據類型,需要的朋友參考下吧
    2017-12-12

最新評論