亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

This 指針--深思

ernest.wang / 1183人閱讀

摘要:當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈??梢灾赶虿煌倪\(yùn)行環(huán)境,這里的運(yùn)行環(huán)境本質(zhì)上指的是對(duì)象,可以是內(nèi)建對(duì)象自定義對(duì)象或者全局對(duì)象。

今天早上看到公眾號(hào)推送了阮一峰老師的文章JavaScript 的 this 原理,文章不是很長(zhǎng)于是研究了一下。

看完自己的總結(jié)如下:

this

this 指向函數(shù)運(yùn)行時(shí)所在的環(huán)境。

函數(shù)運(yùn)行在對(duì)象內(nèi),this 就指向該對(duì)象

運(yùn)行在全局環(huán)境,this 就指向全局環(huán)境

js 允許函數(shù)體內(nèi)部引用當(dāng)前環(huán)境外的其他變量,由于函數(shù)可以在不同運(yùn)行環(huán)境執(zhí)行,“當(dāng)前環(huán)境外的其他變量”就是指“不同運(yùn)行環(huán)境中的變量” ,那么這個(gè)時(shí)候就需要有一種機(jī)制,能夠在函數(shù)體內(nèi)部獲得當(dāng)前的運(yùn)行環(huán)境,所以 ==this== 就應(yīng)運(yùn)而生了。

看到 ==js 允許函數(shù)體內(nèi)部引用當(dāng)前環(huán)境外的其他變量== 想到之前自己總結(jié)過的關(guān)于作用域的知識(shí)點(diǎn):

作用域

函數(shù)定義的時(shí)候就被確定了作用域,與它在什么地方被調(diào)用執(zhí)行無(wú)關(guān)

當(dāng)前作用域沒有定義的變量,即自由變量,會(huì)到父級(jí)作用域中查找,和執(zhí)行作用域無(wú)關(guān);

令我產(chǎn)生困惑的兩句話:

函數(shù)定義的時(shí)候就被確定了作用域,和執(zhí)行作用域無(wú)關(guān)

js 允許函數(shù)體內(nèi)部引用當(dāng)前環(huán)境外的其他變量

這里的 ==執(zhí)行作用域== 與下文的 ==當(dāng)前環(huán)境外的其他變量== 如何理解或者做區(qū)分?

翻閱紅寶書(第三版)p73,執(zhí)行環(huán)境是 js 中最為重要的一個(gè)概念,總結(jié)如下:

函數(shù)的運(yùn)行環(huán)境即其執(zhí)行環(huán)境

每個(gè)函數(shù)都有自己的執(zhí)行環(huán)境,執(zhí)行環(huán)境定義了函數(shù)有權(quán)訪問的其他數(shù)據(jù),保存在變量對(duì)象之中。

當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈。作用域鏈決定了訪問變量對(duì)象的順序。

this 可以指向不同的運(yùn)行環(huán)境,這里的運(yùn)行環(huán)境本質(zhì)上指的是對(duì)象,可以是內(nèi)建對(duì)象、自定義對(duì)象或者全局對(duì)象。

函數(shù)定義時(shí)就被確定了作用域,這個(gè)作用域決定了其訪問變量對(duì)象的順序。而函數(shù)可以在不同環(huán)境被執(zhí)行,這里的 ==不同環(huán)境== (可能是外層函數(shù)或者全局環(huán)境下)的作用域才是執(zhí)行作用域。

所以 執(zhí)行作用域 可以理解為 函數(shù)執(zhí)行位置外部函數(shù)或者全局環(huán)境的作用域, 與函數(shù)自己的作用域(聲明時(shí)就被確定了) 完全是兩碼事

當(dāng)前環(huán)境外的其他變量即函數(shù)自己作用域外的其他變量

函數(shù)要想引用 當(dāng)前環(huán)境外的其他變量 只能用 this ,this 指向當(dāng)前運(yùn)行環(huán)境,運(yùn)行在對(duì)象內(nèi)就指向?qū)ο?,運(yùn)行在全局環(huán)境就指向全局對(duì)象

咦,我自己怎么也有點(diǎn)亂。。

運(yùn)行在全局環(huán)境的 this

眾所周知,瀏覽器環(huán)境下 全局環(huán)境下的 this 就是 window,沒有一點(diǎn)問題

// 瀏覽器環(huán)境下
var a = "a"
this.b = "b"
console.log(this.a)  // a
console.log(b)      // b
console.log(this===window) // true
但是...
// node 環(huán)境下
var x = "xx"
global.y = "yy"
// node 環(huán)境下輸出
console.log(y);   // yy  global 屬性掛載到了全局環(huán)境, 
console.log(global.x) // undefined   全局環(huán)境中定義的x 變量并沒有掛載到頂層對(duì)象global對(duì)象中
console.log(this === global)  // false 
console.log(JSON.stringify(this))// {}  空對(duì)象,并不是 global

查閱MDN發(fā)現(xiàn):

// node 環(huán)境下
function f1() {
    return this
}

console.log(f1() === global) // true  
console.log(this === global) // false

node 環(huán)境下只有定義在函數(shù)內(nèi)部的 this 才指向 global ?
那么, node 環(huán)境下 this 到底指向什么?經(jīng)過和導(dǎo)師的溝通
終于發(fā)現(xiàn)

// node 環(huán)境下
this.num = "10"
global.test = "12"
console.log(module.exports) // {num: "10"}    
console.log(this===module.exports) // true

那么 node 環(huán)境下 this 為什么指向 module.exports 這和模塊化的設(shè)計(jì)又有什么關(guān)系?

發(fā)人深思...

天色已晚,且聽下回分解。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95747.html

相關(guān)文章

  • 創(chuàng)建一種深思熟慮的文化

    摘要:?jiǎn)栴}是,他們有沒有一種默認(rèn)的文化或深思熟慮的文化這個(gè)不同就是計(jì)劃與遠(yuǎn)見。沒有一個(gè)強(qiáng)壯的為什么,對(duì)于如何創(chuàng)造一個(gè)強(qiáng)壯和深思熟慮的文化會(huì)很難。一種可以幫助簡(jiǎn)歷并保持一種深思熟慮的文化的方式,是雇傭是同時(shí)考察技能與價(jià)值觀。 原文: https://www.linkedin.com/wuko...翻譯: 麥芽面包 在商業(yè)和咨詢界文化最近變成了一個(gè)很火的話題。當(dāng)你提到這個(gè)話題時(shí)每個(gè)人都會(huì)變得很...

    Keagan 評(píng)論0 收藏0
  • merge into 用法深思

    摘要:線上出現(xiàn)了一個(gè)問題同步某一功能的數(shù)據(jù)的時(shí)候,同一主鍵的數(shù)據(jù)會(huì)發(fā)多次。拋出主鍵沖突的異常。綜合上述的描述,目前要解決的事情有并發(fā)。數(shù)據(jù)存儲(chǔ)順序前提有標(biāo)識(shí)能區(qū)分最新數(shù)據(jù)?;谏鲜雒枋鰷?zhǔn)備用語(yǔ)句,用數(shù)據(jù)庫(kù)層面的事物來保證數(shù)據(jù)的一致性。 線上出現(xiàn)了一個(gè)問題:mq同步某一功能的數(shù)據(jù)的時(shí)候,同一主鍵的數(shù)據(jù)會(huì)發(fā)多次。業(yè)務(wù)邏輯是,某一條數(shù)據(jù)過來后,我會(huì)先去數(shù)據(jù)庫(kù)查是否存在了此uuid的數(shù)據(jù),如果有的話...

    Galence 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<