浏览器中,console、setTimeout、var定义的变量等,属于window,window.console.log等同于console.log。
nodejs中,global类似window,但定义变量不会添加到global下,比如var a=''; global.a会是未定义的。
模块module¶
一个js文件就是一个模块(module),通过console.log(module)可以查看相关信息,global.module是未定义的,module不属于global。
要让cmd.js的内容能被外部js文件(模块)使用,需要在文件中写上
module.exports.名字 = 自己定义的内容(变量名、函数名..);
在另外一个模块,使用require(模块路径)加载模块:
const xx=require(模块);//不用var的原因是防止变量被覆盖导致其他错误。
将整个模块文件只作为一个功能使用:
module.exports = 自己定义的内容(变量名、函数名..);
类¶
类内定义函数不需要function关键字
class A{
myfunc(){}
}
setImmediate,setTimeout,process.nextTick¶
setImmediate()
与 setTimeout(() => {}, 0)
(传入 0 毫秒的超时)、process.nextTick()
有何不同?
process.nextTick()
会始终在 setTimeout
和 setImmediate
之前执行。
Node.js 还提供 setImmediate()
(相当于使用 setTimeout(() => {}, 0)
),通常用于与 Node.js 事件循环配合使用。