概念:所有属性都可以在程序的任何地方访问,即全局变量。在JavaScript中,通常window是全局对象,而Node.js的全局对象是global,所有全局变量都是global对象的属性,如:console、process等。

一、全局对象与全局变量
global最根本的作用是作为全局变量的宿主。满足以下条件成为全局变量:
1.在最外层定义的变量
2.全局对象的属性
3.隐式定义的变量(未定义直接赋值的变量)
在Node.js中不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。 二、process
它用于描述当前Node.js进程状态的对象。提供了一个与操作系统的简单接口,通常写本地命令行程序的时候,会用到它。
1.process.argv是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,第三个元素开始每个元素是一个运行参数。console.log(process.argv);
/*node argv.js '11' '22' 33 oo
输出:node.exe
argv.js
'11'
'22'
33
'oo'*/
2.process.stdout是标准输出流,进入node环境,通常我们使用的console.log() 其底层是用 process.stdout.write();实现。
3.prcess.stdin是标准输入流,初始时它是被暂停的。要想从标准输入流读取数据,必须恢复流,并手动编写流的事件相应函数。//恢复流
process.stdin.resume();
process.stdin.on('data',function(data){
process.stdout.write('read from console'+data.toString());
})
//node stdin.js 然后输入,可以一直输入
4.process.nextTick(callback)的功能是为事件循环设置一项任务。Node.js会在下次事件循环调响应时调用callback
Node.js适合IO密集型的应用,而不是计算密集型的应用。process.nextTick()提供了一个这样工具,可以把复杂的工作拆散,成较小的事件去执行。 function doSomething(args,callback){
somethingComplited(args);
callback();
}
doSomething('12345',function onEnd(){
compute();
})
如果假设compute()和somethingComplited()是两个较为耗时的函数。以上的程序在调用doSomething时会先执行somethingComplited(args),然后立即调用回调函数,在onEnd()中又会执行compute(),改写为: function doSomething(args,callback){
somethingComplited(args);
process.nextTick(callback);
}
使用process.nextTick()后,改写后的程序会把上面耗时的操作拆分为两个事件,减少每个事件的执行时间,提高事件相应速度。function compute(){
console.log("I am is cpmpute method");
}
function somethingComplited(args){
console.log("I am is somethingComplited method");
console.log(args);
}
//function doSomething(args,callback){
// somethingComplited(args);
// callback();
//}
function doSomething(args,callback){
somethingComplited(args);
process.nextTick(callback);//这个方法是异步执行
}
doSomething('12345',function onEnd(){
compute();
}) 5.process其他方法:process.platform()、process.pid()、process.execPath()、process.memoryUsage()等方法。。。
API链接:http://nodejs.org/api/process.html 二、console
java中的log4j的 Logger logger=new Logger(Object.class);
logger.info
logger.error
logger.debug 用于提供控制台标准输出,Node.js沿用了这个标准,提供与习惯行为一直的console对象。
1.console.log().向标准输出流打印字符并以换行符结束。
使用案例:
console.log("hello");
console.log("hello%marico");
console.log("hello%marico"," Mr. ");
2.console.error();用法与console.log()相同,只是向标准错误流输出。
3.console. trace();向标准错误六输出当前的调用栈
console.log("hello");
console.log('hello%marico');
console.log('hello%marico',1991,'yfc');
console.error('error!');
console.trace('this is a error');
/*
hello
hello%marico
hello%marico 1991
*/

nj08---process、console的更多相关文章

  1. Chrome开发者工具详解(1)-Elements、Console、Sources面板

    Chrome开发者工具详解(1)-Elements.Console.Sources面板 Chrome开发者工具面板 面板上包含了Elements面板.Console面板.Sources面板.Netwo ...

  2. EF异常:WebForm、Console、Winform层不引入EF报错

    WebForm.Console.Winform层可以不引入EntityFramework,但必须引入EntityFramework.SqlServer,否则运行时会报错

  3. Chrome开发者工具详解(1):Elements、Console、Sources面板

    Chrome开发者工具面板 面板上包含了Elements面板.Console面板.Sources面板.Network面板. Timeline面板.Profiles面板.Application面板.Se ...

  4. console.log()、console.info()、console.debug()的区别

    onsole.log().console.info().console.debug()的作用都是在浏览器控制台打印信息的. 使用最多的是console.log().console.info()和con ...

  5. Chrome开发者工具详解(四)之Elements、Console、Sources面板

    Elements面板 实时编辑DOM节点和CSS样式 双击DOM树视图里面的节点,可以实时编辑标签属性,修改的效果会立刻反应在浏览器里 点击右侧Style面板,可以实时修改CSS的属性值,这里面的所有 ...

  6. node源码详解(三)—— js代码在node中的位置,process、require、module、exports的由来

    本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource3 本博客同步在https://cnodejs.o ...

  7. JS里try...catch...finally详解,以及console日志调试(console.log、console.info等)

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. Python笔记-进程Process、线程Thread、上锁

    1.对于操作系统来说,一个任务就是一个进程(Process).比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程. 2.在一个进程内部,要同时干多件事,就需要同时运行多个“ ...

  9. Java进程Runtime、Process、ProcessBuilder调用外部程序

    原文地址:https://blog.csdn.net/c315838651/article/details/72085739 通过Java执行系统命令,与cmd中或者终端上一样执行shell命令,最典 ...

随机推荐

  1. java用freemarker实现导出excel

    前几天做了jxl导出excel,现在用freemarker做一下 freemarker导出excel和导出word步骤和是实现方法是相同的. 1.制作excel模板 2.将后缀名改为ftl,放到对应的 ...

  2. lucene构建restful风格的简单搜索引擎服务

    来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客如今也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,文件夹结构: 二,配置文件: 总 ...

  3. Google翻译PDF文档

    Google翻译PDF文档 翻译软件虽多如牛毛,但有关整段/全文翻译,堪用的软件极少, 涉及专业技术的文献.胜任翻译工作的人力稀缺.少不了project师讴心沥血. 由于多是PDF格式.即使要翻译个概 ...

  4. ABAP FIELD-SYMBOLS 有大作用- 将没有可改參数的增强出口变得也能改主程序的值了

    看下图代码: report  z_xul_test2 中 定义了 全局变量 G_DATA1 , 分别调用了 z_xul_tes1 中的 form  和 function zbapi_test , 这两 ...

  5. leveldb学习:sstable(2)

    block写入:block_builder block.h和.cc里定义了block的entry存储格式和restart,提供了entry的查找接口以及迭代器.那么怎样往写block里写entry呢? ...

  6. 杭电3501Calculation 2 欧拉函数

    Calculation 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  7. bzoj4568: [Scoi2016]幸运数字(LCA+线性基)

    4568: [Scoi2016]幸运数字 题目:传送门 题解: 好题!!! 之前就看过,当时说是要用线性基...就没学 填坑填坑: %%%线性基 && 神犇 主要还是对于线性基的运用和 ...

  8. web security

    brute force cracking   暴力破解 Brute force (also known as brute force cracking) is a trial and error me ...

  9. 修改echarts环形图的牵引线及文字位置

    修改echarts环形图的牵引线及文字位置,下面代码及效果不仅如此,也包含了其它的效果哦.有问题可以留言. 根据echarts官方示例修改效果: 官方示例图: 修改效果图: 直接上代码:其它不多说. ...

  10. C# 比较两个数据的不同

    string[] arrRate = new string[] { "op1010", "op1020", "op1030", " ...