NodeJS和浏览器中this关键字的不同之处,如何解释其差异?

2026-04-09 12:500阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计707个文字,预计阅读时间需要3分钟。

NodeJS和浏览器中this关键字的不同之处,如何解释其差异?

前言:学习过JavaScript的人可能会遇到这样一个问题:处于不同环境下this的指向问题。那么,下面来看一下下面的代码:

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

你们可能会这样想:这里声明了一个全局变量`type`,在`toWhere`函数中修改了`this.type`的值,并递归调用自身。那么,输出结果会是什么呢?

前言

学习过JavaScript的人肯定清楚 处在不同环境下this的指向问题。那么看下面的代码

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

你们肯定会这样想:

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

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

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

那么就这样结束了吗?

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

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

相关调试

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

阅读全文
标签:不同

本文共计707个文字,预计阅读时间需要3分钟。

NodeJS和浏览器中this关键字的不同之处,如何解释其差异?

前言:学习过JavaScript的人可能会遇到这样一个问题:处于不同环境下this的指向问题。那么,下面来看一下下面的代码:

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

你们可能会这样想:这里声明了一个全局变量`type`,在`toWhere`函数中修改了`this.type`的值,并递归调用自身。那么,输出结果会是什么呢?

前言

学习过JavaScript的人肯定清楚 处在不同环境下this的指向问题。那么看下面的代码

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

你们肯定会这样想:

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

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

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

那么就这样结束了吗?

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

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

相关调试

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

阅读全文
标签:不同