iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >this关键字在NodeJS和浏览器中有什么区别
  • 888
分享到

this关键字在NodeJS和浏览器中有什么区别

2023-06-06 17:06:21 888人浏览 独家记忆
摘要

今天就跟大家聊聊有关this关键字在nodejs和浏览器中有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。var type = 1functio

今天就跟大家聊聊有关this关键字在nodejs和浏览器中有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

你们肯定会这样想:

这里声明了一个全局变量type,当执行type=1的时候,赋值为1。之后toWhere函数调用,看到函数中有this 就去判断this的指向,这里很清楚,this指向了window,this.type=2执行后,全局变量type就赋值为2了。

最后打印全局变量type 结果很明显是2。

this关键字在NodeJS和浏览器中有什么区别

打开浏览器验证一下,没问题 一个2明晃晃的在那里。

那么就这样结束了吗?

如果你学过node,现在用nodejs重新执行一下以上代码,你就发现了不一样的地方。

this关键字在NodeJS和浏览器中有什么区别

你现在发现 那个1怎么这么不对劲呢,不是等于2吗?

相关调试

从以上的例子可以看到,相同的js代码在浏览器中运行和在nodejs中运行结果变得不一样了。

这其实是因为this指向问题,但是这个指向和我们通常认知中的指向是不一样的。这个指向问题是由于node工作原理造成的

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

1、打印浏览器中的this

this关键字在NodeJS和浏览器中有什么区别

函数中this指向了window,而全局的this也是指向了window

2、打印nodeJs中的this

this关键字在NodeJS和浏览器中有什么区别

发现了吧。函数中的this指向了Object [global]。

当我们给函数this赋值时,其实它挂靠在global对象上。所以它不会去改变全局中this的值

Node原理解析

那么看看为什么会这样

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

浏览器直接在全局范围执行的脚本文件

而在Node中,Node将代码隐藏在一个立即被调用的匿名函数,你可以使用global来访问全局范围

在之前的解释中,我们会发现在外部打印的一个this,它指向了一个空对象{},其实在node中运行的任何文件其实都被包裹在一个{}中,所以脚本文件都在自己的闭包中执行, 类似于下面这样

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

在之前的例子中,函数的外面this指向的是一个空对象{},而在函数内部的this没有指定的执行上下文,所以它指向了global对象-(可以访问该匿名函数执行上下文的全局范围)

看完上述内容,你们对this关键字在NodeJS和浏览器中有什么区别有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: this关键字在NodeJS和浏览器中有什么区别

本文链接: https://www.lsjlt.com/news/248036.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • this关键字在NodeJS和浏览器中有什么区别
    今天就跟大家聊聊有关this关键字在NodeJS和浏览器中有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。var type = 1functio...
    99+
    2023-06-06
  • nodejs和浏览器的区别有哪些
    这篇文章主要介绍“nodejs和浏览器的区别有哪些”,在日常操作中,相信很多人在nodejs和浏览器的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nodejs和浏...
    99+
    2024-04-02
  • nodejs与浏览器中全局对象区别是什么
    这篇文章主要介绍“nodejs与浏览器中全局对象区别是什么”,在日常操作中,相信很多人在nodejs与浏览器中全局对象区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nodejs与浏览器中全局对象区别...
    99+
    2023-06-21
  • JavaScript中this关键字有什么用
    本篇内容主要讲解“JavaScript中this关键字有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中this关键字有什么用”吧!与...
    99+
    2024-04-02
  • Java中this关键字有什么用
    这篇文章主要介绍了Java中this关键字有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。this 关键字this 关键字代表了所属函数的调用者对象。this 关键字的...
    99+
    2023-06-27
  • GO语言make和new关键字有什么区别
    今天小编给大家分享一下GO语言make和new关键字有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. new 和...
    99+
    2023-07-06
  • java中this和super有什么区别
    这篇文章将为大家详细讲解有关java中this和super有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,...
    99+
    2023-06-14
  • java中super和this有什么区别
    在Java中,super和this是两个关键字,用于引用父类和当前类的实例。1. super关键字:- super关键字用于引用父类...
    99+
    2023-08-11
    java
  • windows中edge浏览器和ie的区别是什么
    今天小编给大家分享一下windows中edge浏览器和ie的区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。edge...
    99+
    2023-07-01
  • Java重定向和路径关键字:有什么区别?
    在Java编程中,重定向和路径关键字是非常常见的概念。它们在不同的场景下起到不同的作用,但是对于初学者来说,它们往往容易混淆。本文将详细介绍Java重定向和路径关键字的区别,并给出相应的演示代码。 一、Java重定向 Java重定向是指将...
    99+
    2023-10-11
    重定向 关键字 path
  • CSS中height和width在IE和其他浏览器中有哪些区别
    这篇文章主要讲解了“CSS中height和width在IE和其他浏览器中有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS中height和wid...
    99+
    2024-04-02
  • nodejs中path.join和path.resolve的有什么区别
    这篇文章主要讲解了“nodejs中path.join和path.resolve的有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs中pat...
    99+
    2024-04-02
  • 浏览器中DOMContentLoaded与load的区别是什么
    这篇文章主要介绍了浏览器中DOMContentLoaded与load的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。DOMCont...
    99+
    2024-04-02
  • 火狐浏览器和IE的CSS区别是什么
    本篇文章给大家分享的是有关火狐浏览器和IE的CSS区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。你对IE和火狐浏览器的CSS区别是否...
    99+
    2024-04-02
  • Go语言中new和make关键字的区别是什么
    这篇文章主要介绍了Go语言中new和make关键字的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中new和make关键字的区别是什么文章都会有所收获,下面我们一起来看看吧。newnew 是一...
    99+
    2023-07-05
  • java中的This关键字和单例模式是什么
    这篇文章主要介绍“java中的This关键字和单例模式是什么”,在日常操作中,相信很多人在java中的This关键字和单例模式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • Go语言中new和make关键字有哪些区别
    本篇内容介绍了“Go语言中new和make关键字有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!newnew 是一个内置函数,它会分...
    99+
    2023-07-05
  • Python框架中的同步关键字和异步框架有什么区别?
    Python是一种高级编程语言,广泛用于Web应用程序的开发。Python框架中的同步关键字和异步框架是Web开发中的两个重要概念。同步关键字是一种常见的编程方式,它指的是在代码执行期间,代码中的操作必须按照顺序执行。而异步框架则是指在代...
    99+
    2023-06-24
    同步 关键字 框架
  • static关键字在Java中有什么用
    本文章向大家介绍static关键字在Java中有什么用的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允...
    99+
    2023-06-06
  • Python中字典和json有什么区别
    本篇文章为大家展示了Python中字典和json有什么区别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作