1. 全局属性之控制台对象
console是node全局对象global的属性, 其值也是打印对象.
console.log(global.console)
和JavaScript一样,因为是全局属性可以省略全局对象, 一次可以直接使用console
获取控制台对象
1.1 node重新实现的控制台输入
注意 node中console
是重现实现的,和之前学习JavaScript中的console
不是同一个对象.
// 1. 标准输出流
console.log('1111')
// console.debug是console.log的别名,基本不再使用
console.debug('3333')
// 2. 错误输出流
console.error('4444') // 警告输入
// 3.查看对象的内容,并将信息输出到控制台
console.dir('2222')
// 4. 计数器
console.count(1)
console.count(1)
console.count(1)
// 5. 计算一段代码的执行之间,
// time 和timeEnd 配合使用,两个方法的参数必须是相同的字符串
// time标记开始时间
console.time('t1')
for(var i = 0;i< 99999999;i++){
}
// 标记结束时间
console.timeEnd('t1')
// 6. 断言assert
// 就是对一个表达式的执行结果进行评估(简单的断言测试)
/*
console.assert('表达式','输出文字')
表达式为假时,输入文字内容(抛出错误)
表达式为真,并不会输出内容
*/
console.assert(true, '断言内容')
2. 全局作用域与全局函数
模块化提到过,在Node.js中.每个文件都是一个独立的模块, 模块中的变量和方法都是私有的. 如果希望使用其他模块中的数据, 除了导入导出, 也可以使用全局对象, 将共享的数据挂载到全局对象上.
2.1. 自定义全局变量或方法
global.aa = 10
global.add = (a,b) => a +b;
2.2. 内置的全局方法
2.2.1 setTimout函数 与clearTimeout函数
设置与清除延迟定时器.
node中的延迟定时器虽然浏览器中的延迟定时器的翻版, 但是仍然在实现上有所不同, 例如决不能把字符串作为定时器的第一个参数,
setTimeout(function () {
console.log(1111)
}, 2000)
2.2.2 setInterval函数与 clearInterval函数
设置与清除间隔(循环)定时器
setInterval(function () {
console.log(1111)
}, 2000)
2.2.3 setImmediate 函数与clearImmediate 函数
有点类似于定时的,但不是的, setImmediate 函数是在当前时间轮询末尾处执行
setImmediate(() => {
console.log(123)
})
3. Process 进程
process是Node中的一个全局对象属性, 可以在任何模块中使用, 该对象具有一些可以用来获取Node.js应用程序以及运行该应用程序的用户,运行环境的各种信息的属性,方法与事件
3.1. argv 属性
node启动命令的参数
console.log(process.argv)
process.argv
属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。
如果不传参数,返回一个数组,数组第一项是当前node文件路径,第二个是运行文件的路径
[
'C:\\Program Files\\nodejs\\node.exe', // node命令路径
'C:\\Users\\HiWin10\\Desktop\\ceshi\\index.js' // 当前文件路径
]
3.2. execPath 属性
启动 Node.js 进程的可执行文件的绝对路径名。
就是process.argv数组中的第一个值
console.log(process.execPath)
// 'C:\\Program Files\\nodejs\\node.exe'
3.3. env 属性
process.env
属性返回一个包含用户环境信息的对象
console.log(process.env)
在process.env中新增一个属性,会将属性值转换成字符串
process.env.foo = "prodect"
console.log(process.env.foo)
3.4. cwd 方法
返回 Node.js 进程的当前工作的目录路径
console.log(process.cwd())
// 文件夹路径
// C:\Users\HiWin10\Desktop\ceshi
3.5. nextTick 方法
接受参数
- 第一个参数必填, 是回调函数
- 第二个之后的参数可选, 就是第二回调函数的参数
process.nextTick()
方法将 callback
添加到下一个时间点的队列。 在 JavaScript 堆栈上的当前操作运行完成之后以及允许事件循环继续之前,此队列会被完全耗尽。 如果要递归地调用 process.nextTick()
,则可以创建无限的循环
console.log('开始'); // 1
process.nextTick(() => {
console.log('下一个时间点的回调'); // 3
});
console.log('调度'); // 2
3.5.1 process.nextTick 与其他方法对比
process.nextTick(() => {
console.log('下一个时间点的回调')
})
setImmediate(() => {
console.log("setImediate")
})
setTimeout(() => {
console.log("setTimeout")
})
网友评论