共计 2240 个字符,预计需要花费 6 分钟才能阅读完成。
给 node 程序传递参数
失常状况下咱们通过 node xxx.js 就能够执行咱们执行咱们的文件。在某些状况下咱们心愿给 node 传递一些参数。咱们能够在文件名前面加上须要传递的参数。node xxx.js age=18 haha
咱们能够在程序中通过 process
这个内置对象获取到传递的参数。console.log(process);
通过打印 process
这个内置对象,咱们发现它外面蕴含了很多信息。
其中 argv(argument vector)
属性是一个数组,蕴含了咱们传递过去的参数。第一个元素是 node
的装置门路,第二个参数是咱们所在文件的门路,第三和第四个参数正是咱们传递的参数。
咱们通过 argv 数组下标来获取传递的参数,还能够遍历这个数组的参数信息。
console.log(process.argv[2]);
console.log(process.argv[3]);
process.argv.forEach(item => {console.log(item);
})
node 的输入
console 对象是一个全局对象。console.log: 最罕用的输入内容形式
console.clear: 清空控制台
console.trace: 打印函数的调用栈。能够晓得某个函数被哪些调用。console.log(process.argv[2]);
console.log(process.argv[3]);
console.clear()
process.argv.forEach(item => {console.log(item);
})
咱们能够看到以后控制台打印的是 argv 数组遍历的后果,后面 process.argv[2]和 process.argv[3]打印的后果曾经被清空了。
通过 console.trace()
咱们能够打印出函数的调用栈。
function foo() {bar()
}
function bar() {console.trace();
}
foo()
全局对象
非凡的全局对象
非凡的全局对象能够在模块中任意应用,然而不能在命令行交互中应用,包含__dirname、__filename、exports、module、require()。
__dirname:获取以后文件所在的门路,是绝对路径,不包含文件名。
__filename:获取以后文件所在门路和文件名。
console.log(__dirname);
console.log(__filename);
罕用的全局对象
process 对象
process 对象提供了 node 过程中相干的信息,例如 node 的运行环境、参数信息等。当咱们用 node 运行程序的时候,它会在操作系统里开启一个过程。
console 对象
console 对象上述曾经介绍过。
定时器函数
setTimeout(callback, delay[, ...args]):callback 在 delay 毫秒后执行一次;setInterval(callback, delay[, ...args]):callback 每 delay 毫秒反复执行一次;setImmediate(callback[, ...args]):callbackI / O 事件后的回调的“立刻”执行;process.nextTick(callback[, ...args]):增加到下一次 tick 队列中。
setTimeout(() => {console.log('setTimeout');
}, 0)
setInterval(() => {console.log('setInterval');
}, 1000)
setImmediate(() => {console.log('setImmediate');
})
process.nextTick(() => {console.log('process.nextTick');
})
复制代码
global 对象
global 是一个全局对象,后面提到的process、console、setTimeout
等都被放到了 global 全局对象中。console.log(global);
在控制台输入了 global 全局对象一部分内容,并不是全副。
想要看到 global 全局对象的更多内容,咱们能够在终端通过输出 node 进入交互式环境。而后在交互式环境中输出 global. 而后按两次 tab 键,就能够看到 global 全局对象的更多信息。
global 和 window 的区别
在浏览器中,全局变量都是在 window 上的,比方有 document、setInterval、setTimeout、alert、console 等等。
在 node 中,global 是全局对象。
在浏览器中执行的 javascript
代码,如果咱们在顶级范畴内通过 var 定义的一个属性,默认会被增加到 window
对象上。因为在浏览器中没有模块的概念,是最顶层的货色。
`var age = 18
console.log(age);`
咱们在浏览器中运行,并且在控制台中输出 window
,咱们能够看到window
对象中有 age
属性。
在 node 中,咱们通过 var 定义一个变量,它只是在以后模块中有一个变量,不会放在全局中。因为在 node 中每个文件都是一个独立的模块,定义的变量是在模块外面。如果放在全局,另一个模块中定义雷同的变量名会产生抵触。
而后咱们在 node 环境中运行此文件。
var age = 18
console.log(age);
console.log(global.name);
能够看到 global 对象中没有 name 属性。