NodeJS和浏览器中this关键字的不同之处,如何解释其差异?
- 内容介绍
- 文章标签
- 相关推荐
本文共计707个文字,预计阅读时间需要3分钟。
前言:学习过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分钟。
前言:学习过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中运行结果变得不一样了。

