关于在命令行中输入node命令后执行nodejs的疑问。
发布于 11 年前 作者 chuguixin 9023 次浏览 最后一次编辑是 8 年前

现象:在命令行中输入node命令后执行nodejs的语句,require(“xxx”) === xxx;会返回true。比如,require(“fs”) === fs;会返回true。而在实际module的js文件中,肯定是错误的,至少xxx是not define。 猜测:首先,require(“xxx”) === xxx;返回true即说明他们都是指向了同一个引用,同时在全局下已经声明了xxx这个变量并且已经赋值为相关的模块。 疑问:在命令行中输入node命令的时候发生了什么?能确定的是这个执行环境是全局,那么它与我们平时实际开发模块中的执行环境还有什么其它区别?

1 回复

我认为可以是这样的,fs === require(‘fs’)的时候,解释器遇到fs时,会自动定义为require(‘fs’) var fs = 1; fs 会输出 A different “fs” already exists globally

在文件中 this指向的是module,shell中指向的是global

回到顶部