一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - node.js - NodeJS和瀏覽器中this關(guān)鍵字的不同之處

NodeJS和瀏覽器中this關(guān)鍵字的不同之處

2022-01-25 16:27Beatrix node.js

這篇文章主要給大家介紹了關(guān)于NodeJS和瀏覽器中this關(guān)鍵字不同的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

學(xué)習(xí)過(guò)JavaScript的人肯定清楚 處在不同環(huán)境下this的指向問(wèn)題。那么看下面的代碼

var type = 1
function toWhere(){
	this.type = 2;
}
toWhere();
console.log(type)

你們肯定會(huì)這樣想:

這里聲明了一個(gè)全局變量type,當(dāng)執(zhí)行type=1的時(shí)候,賦值為1。之后toWhere函數(shù)調(diào)用,看到函數(shù)中有this 就去判斷this的指向,這里很清楚,this指向了window,this.type=2執(zhí)行后,全局變量type就賦值為2了。

最后打印全局變量type 結(jié)果很明顯是2。

NodeJS和瀏覽器中this關(guān)鍵字的不同之處

打開瀏覽器驗(yàn)證一下,沒(méi)問(wèn)題 一個(gè)2明晃晃的在那里。

那么就這樣結(jié)束了嗎?

如果你學(xué)過(guò)node,現(xiàn)在用nodejs重新執(zhí)行一下以上代碼,你就發(fā)現(xiàn)了不一樣的地方。

NodeJS和瀏覽器中this關(guān)鍵字的不同之處

你現(xiàn)在發(fā)現(xiàn) 那個(gè)1怎么這么不對(duì)勁呢,不是等于2嗎?

相關(guān)調(diào)試

從以上的例子可以看到,相同的js代碼在瀏覽器中運(yùn)行和在nodejs中運(yùn)行結(jié)果變得不一樣了。

這其實(shí)是因?yàn)閠his指向問(wèn)題,但是這個(gè)指向和我們通常認(rèn)知中的指向是不一樣的。這個(gè)指向問(wèn)題是由于node工作原理造成的

var type = 1
function toWhere() {
 this.type = 2
 console.log("函數(shù)中this指向",this)
}
toWhere()
console.log(type)
console.log("全局中this",this)

1、打印瀏覽器中的this

NodeJS和瀏覽器中this關(guān)鍵字的不同之處

函數(shù)中this指向了window,而全局的this也是指向了window

2、打印nodeJs中的this

NodeJS和瀏覽器中this關(guān)鍵字的不同之處

發(fā)現(xiàn)了吧。函數(shù)中的this指向了Object [global]。

當(dāng)我們給函數(shù)this賦值時(shí),其實(shí)它掛靠在global對(duì)象上。所以它不會(huì)去改變?nèi)种衪his的值

Node原理解析

那么看看為什么會(huì)這樣

首先我們得去了解nodeJs的工作原理

瀏覽器直接在全局范圍執(zhí)行的腳本文件

而在Node中,Node將代碼隱藏在一個(gè)立即被調(diào)用的匿名函數(shù),你可以使用global來(lái)訪問(wèn)全局范圍

在之前的解釋中,我們會(huì)發(fā)現(xiàn)在外部打印的一個(gè)this,它指向了一個(gè)空對(duì)象{},其實(shí)在node中運(yùn)行的任何文件其實(shí)都被包裹在一個(gè){}中,所以腳本文件都在自己的閉包中執(zhí)行, 類似于下面這樣

{
	(function(){
		//腳本文件
	})()
}

在之前的例子中,函數(shù)的外面this指向的是一個(gè)空對(duì)象{},而在函數(shù)內(nèi)部的this沒(méi)有指定的執(zhí)行上下文,所以它指向了global對(duì)象-(可以訪問(wèn)該匿名函數(shù)執(zhí)行上下文的全局范圍)

總結(jié)

到此這篇關(guān)于NodeJS和瀏覽器中this關(guān)鍵字不同之處的文章就介紹到這了,更多相關(guān)NodeJS 瀏覽器中this關(guān)鍵字內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://juejin.cn/post/6934896568541642788

延伸 · 閱讀

精彩推薦
  • node.jsNode.js ObjectWrap 的弱引用問(wèn)題

    Node.js ObjectWrap 的弱引用問(wèn)題

    最近在寫 Node.js Addon 的過(guò)程中,遇到了一個(gè)問(wèn)題,然后發(fā)現(xiàn)是 ObjectWrap 弱引用導(dǎo)致的,本文介紹一下具體的問(wèn)題和排查過(guò)程,以及 ObjectWrap 的使用問(wèn)題。...

    編程雜技9852022-01-04
  • node.jsrequire加載器實(shí)現(xiàn)原理的深入理解

    require加載器實(shí)現(xiàn)原理的深入理解

    這篇文章主要給大家介紹了關(guān)于require加載器實(shí)現(xiàn)原理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需...

    隱冬8462022-03-03
  • node.jsnodejs中使用worker_threads來(lái)創(chuàng)建新的線程的方法

    nodejs中使用worker_threads來(lái)創(chuàng)建新的線程的方法

    這篇文章主要介紹了nodejs中使用worker_threads來(lái)創(chuàng)建新的線程的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友...

    flydean程序那些事8982022-01-06
  • node.js詳解node.js創(chuàng)建一個(gè)web服務(wù)器(Server)的詳細(xì)步驟

    詳解node.js創(chuàng)建一個(gè)web服務(wù)器(Server)的詳細(xì)步驟

    這篇文章主要介紹了詳解node.js創(chuàng)建一個(gè)web服務(wù)器(Server)的詳細(xì)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    王佳斌8952021-12-31
  • node.js在瀏覽器中,把 Vite 跑起來(lái)了!

    在瀏覽器中,把 Vite 跑起來(lái)了!

    大家好,我是 ssh,前幾天在推上沖浪的時(shí)候,看到 Francois Valdy 宣布他制作了 browser-vite[1],成功把 Vite 成功在瀏覽器中運(yùn)行起來(lái)了。這引起了我的興趣,如...

    前端從進(jìn)階到入院9282022-01-11
  • node.jslinux服務(wù)器快速卸載安裝node環(huán)境(簡(jiǎn)單上手)

    linux服務(wù)器快速卸載安裝node環(huán)境(簡(jiǎn)單上手)

    這篇文章主要介紹了linux服務(wù)器快速卸載安裝node環(huán)境(簡(jiǎn)單上手),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需...

    mose-x8462022-01-22
  • node.jsk8s node節(jié)點(diǎn)重新加入master集群的實(shí)現(xiàn)

    k8s node節(jié)點(diǎn)重新加入master集群的實(shí)現(xiàn)

    這篇文章主要介紹了k8s node節(jié)點(diǎn)重新加入master集群的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋...

    Scarborought13922022-01-22
  • node.jsNode.js 中如何收集和解析命令行參數(shù)

    Node.js 中如何收集和解析命令行參數(shù)

    這篇文章主要介紹了Node.js 中如何收集和解析命令行參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋...

    descire8802021-12-28
主站蜘蛛池模板: 操岳母逼小说 | 高清毛片aaaaaaaaa片 | 91桃色视频 | 国产一二在线观看视频网站 | 国产成人+亚洲欧洲 | 色播导航 | 思思久久精品在热线热 | 日韩免费 | 息与子中文字幕完整在线 | 我们中文在线观看免费完整版 | 精品91自产拍在线观看99re | 男男gaygays黑人| aⅴ导航站| 国产男人天堂 | 国产有码在线 | 好爽好紧小雪别夹小说 | 丁香六月色 | 青草香蕉精品视频在线观看 | 国产videos hd | 性欧美金发洋妞xxxxbbbb | 日韩亚洲国产激情在线观看 | 金牛网155755水心论坛黄大父母 | 成人午夜在线视频 | 青春学堂在线观看 | 成人亚洲欧美日韩中文字幕 | 国产在线激情视频 | 91这里只有精品 | 亚洲香蕉伊在人在线观看9 亚洲系列国产系列 | 99久9在线视频 | 欧美综合国产精品日韩一 | 亚洲福利一区二区精品秒拍 | 国产成人精品日本亚洲网站 | 图片亚洲va欧美va国产综合 | 日韩精品一区二三区中文 | 无颜之月全集免费观看 | 国产视频久久久久 | a在线观看欧美在线观看 | 欧美交换乱理伦片120秒 | 日韩免费在线视频 | 亚洲首页国产精品丝袜 | 性色欲情网站IWWW九文堂 |