国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

深入理解JavaScript (4) —— 從自由變量到作用域鏈

LittleLiByte / 3591人閱讀

摘要:自由變量如果在某個作用域中使用了變量,而變量并未在該作用域中聲明在其它作用域中聲明了,則該變量即為自由變量。換言之,此處最終執(zhí)行的函數(shù)是,而自由變量是,因此要到創(chuàng)建的作用域中去找的值。

自由變量:如果在某個作用域中使用了變量“a”,而變量“a”并未在該作用域中聲明(在其它作用域中聲明了),則該變量“a”即為自由變量。

var a = 1;
function fn() {
    var b = 2;
    console.log( a + b);    //變量a即為一個自由變量
}

上述代碼中,取b的值就直接可以在fn作用域中取,因為b就是在這里定義的。而取x的值時,就需要到另一個作用域中取。到哪個作用域中取呢?

有人說,要到父作用域中取,其實有時候這種解釋會產(chǎn)生歧義。例如:

var a = 1;
function fn() {
    console.log(a);
}

function show(f) {
    var a = 2;
    (function () {
        f();    //1,而不是2
    })();
}

show(fn);

上述代碼的執(zhí)行結(jié)果說明“要到父作用域中取”這句話并不準確,更貼切的說法是:要到創(chuàng)建這個被執(zhí)行函數(shù)(此處為fn)的那個作用域(此處為全局作用域,因為fn是在全局作用域中創(chuàng)建的)中取值 是“創(chuàng)建”,而不是“調(diào)用”,切記切記——其實這就是所謂的“靜態(tài)作用域”。換言之,此處最終執(zhí)行的函數(shù)是fn,而自由變量是a,因此要到創(chuàng)建fn的作用域中去找a的值。

存在這樣的可能,在創(chuàng)建fn的作用域中并未找到自由變量a,此時怎么辦呢?那就再到該作用域的上一級作用域中尋找,如若還沒有,就繼續(xù)向上找,直至找到全局作用域,若依然未找到,就會報“a is not defined!”。能夠沿著作用域一級級向上尋找的機制就稱為“作用域鏈”。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91724.html

相關(guān)文章

  • 【進階2-2期】JavaScript深入作用域鏈理解閉包

    摘要:使用上一篇文章的例子來說明下自由變量進階期深入淺出圖解作用域鏈和閉包訪問外部的今天是今天是其中既不是參數(shù),也不是局部變量,所以是自由變量。 (關(guān)注福利,關(guān)注本公眾號回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進階的第二期,本周的主題是作用域閉包,今天是第7天。 本計劃一共28期,每期重點攻克一個面試重難點,如果你還不了解本進階計...

    simpleapples 評論0 收藏0
  • javascript深入理解-作用域鏈理解閉包

    摘要:一概要紅寶書對于閉包的定義閉包就是有權(quán)訪問另外一個函數(shù)作用域中變量的函數(shù)。湯姆大叔在關(guān)于閉包對的文章的定義。解決辦法改成閉包,方法就是返回一個函數(shù),并且訪問變量循環(huán)結(jié)束后的全局執(zhí)行上下文沒有變化。 一、概要 紅寶書(P178)對于閉包的定義:閉包就是有權(quán)訪問另外一個函數(shù)作用域中變量的函數(shù)。 MDN,對于閉包的定義:閉包就是指能夠訪問自由變量的函數(shù)。 那么什么是自由變量?自由變量就是在函...

    Scholer 評論0 收藏0
  • JavaScript中的閉包

    摘要:閉包引起的內(nèi)存泄漏總結(jié)從理論的角度將由于作用域鏈的特性中所有函數(shù)都是閉包但是從應(yīng)用的角度來說只有當函數(shù)以返回值返回或者當函數(shù)以參數(shù)形式使用或者當函數(shù)中自由變量在函數(shù)外被引用時才能成為明確意義上的閉包。 文章同步到github js的閉包概念幾乎是任何面試官都會問的問題,最近把閉包這塊的概念梳理了一下,記錄成以下文章。 什么是閉包 我先列出一些官方及經(jīng)典書籍等書中給出的概念,這些概念雖然...

    HmyBmny 評論0 收藏0
  • 深入理解JavaScript作用域和作用域鏈

    前言 JavaScript中有一個被稱為作用域(Scope)的特性。雖然對于許多新手開發(fā)者來說,作用域的概念并不是很容易理解,本文我會盡我所能用最簡單的方式來解釋作用域和作用域鏈,希望大家有所收獲! 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客 作用域(Scope) 1.什么是作用域 作用域是在運行時代碼中的某些特定部分中變量,函數(shù)和對象的可訪問性。換句話說,作用域決定了代碼區(qū)塊中變量和其他資源的可見...

    baiy 評論0 收藏0
  • 深入理解JavaScript作用域和作用域鏈

    前言 JavaScript中有一個被稱為作用域(Scope)的特性。雖然對于許多新手開發(fā)者來說,作用域的概念并不是很容易理解,本文我會盡我所能用最簡單的方式來解釋作用域和作用域鏈,希望大家有所收獲! 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客 作用域(Scope) 1.什么是作用域 作用域是在運行時代碼中的某些特定部分中變量,函數(shù)和對象的可訪問性。換句話說,作用域決定了代碼區(qū)塊中變量和其他資源的可見...

    ytwman 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<