问题描述
node下this的指向问题,其他的我都知道,不过如果直接定义局部变量呢,这个局部变量怎么获取到呢,是存放在哪里的。
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
var name = 1
console.log(name)
console.log(this.name)
console.log(global.name)
你期待的结果是什么?实际看到的错误信息又是什么?
1,undefined,undefined
node下this的指向问题,其他的我都知道,不过如果直接定义局部变量呢,这个局部变量怎么获取到呢,是存放在哪里的。
// 请把代码文本粘贴到下方(请勿用图片代替代码)
var name = 1
console.log(name)
console.log(this.name)
console.log(global.name)
1,undefined,undefined
在Node.js中也是分REPL环境和node文件环境的,这两种情况不一样。具体原因是REPL其实是用了vm包了一层,而Node.js在vm中的var赋值直接就挂在global上了。
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
与浏览器中
js
运行情况一样,只有一点区别,就是浏览器中window
顶层对象变成了node
中的global
顶层对象。浏览器中:
console.log(this) -> window
node 中:
console.log(this) -> global
另外,浏览器中无模块化,而
node
中有模块化,这在声明变量是略有不同。node 中:
var name = 'name'
;浏览器中:
(function(){ var name = 'name' })();