node环境下通过var声明的对象是挂载到哪里?

clipboard.png

node环境下通过var声明的对象是挂载到global全局对象上面吗?但是我通过global.变量名 打印出来的结果怎么是undefined呢?
求大佬帮忙解疑一下?

var age = 22;
var printAge = function (age) {
    console.log(age);
}
console.log('var声明的变量',window.age===22);//false
console.log('var声明的变量',window.printAge===printAge);//false
console.log(global);//window
console.log(global.age);//undefined
阅读 4.6k
4 个回答
(function(exports, require, module, filename, dirname)){
   //你执行的代码
}

那是因为你执行的代码被函数包裹,var在函数作用域顶部。而如果你是进入node指令窗口写这段代码,那就在global上。

你这样写不会再global挂载age

你需要这么写:

// 这里这里没有var
age = 22;
var printAge = function(age) {
  console.log(age);
};

console.log(global.age); //22

这个var属于模块作用域,只在当前js文件内有效,并不是全局的;想要全局,需要 global.age = 1

确定这个代码不会报错吗???

如果运行环境是 node,那么根本不存在window

如果运行环境是 browser,那么根本不存在 global

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题