node.js全局对象和全局变量

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

      一、全局对象与全局变量

global最根本的作用是作为全局变量的宿主。满足以下条件成为全局变量:
1.在最外层定义的变量
2.全局对象的属性
3.隐式定义的变量(未定义直接赋值的变量)
在Node.js中不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。

      二、process

它用于描述当前Node.js进程状态的对象。提供了一个与操作系统的简单接口,通常写本地命令行程序的时候,会用到它。
1.process.argv是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,第三个元素开始每个元素是一个运行参数。
2.process.stdout是标准输出流,通常我们使用的console.log()  其底层是用 process.stdout.write();实现。
3.prcess.stdin是标准输入流,初始时它是被暂停的。要想从标准输入流读取数据,必须恢复流,并手动编写流的事件相应函数。
4.process.nextTick(callback)的功能是为事件循环设置一项任务。Node.js会在下次事件循环调响应时调用callback
Node.js适合IO密集型的应用,而不是计算密集型的应用。process.nextTick()提供了一个这样工具,可以把复杂的工作拆散,编较小的事件程一个。
function doSomething(args,callback){
somethingComplited(args);
callback();
}      
doSomething('12345',function onEnd(){
compute();
})
stdin.js
//要想从标准输入流读取数据,必须恢复流,并手动编写流的事件相应函数。
process.stdin.resume();
process.stdin.on('data',function(data){//注册事件process.stdout.write('read from console'+data.toString());
})
//用来获取键盘输入的值
nexttick.js
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);//为事件循环设置一项任务,node.js会在下次事件循环调同响应时调用callback
}
doSomething('12345',function onEnd(){compute();
})
/*从程序的运行结果:
I am is somethingComplited method
12345
I am is cpmpute method
可以看出,在doSomething中先执行somethingComplited(args);然后再执行通过process.nextTick(callback);响应调用回调函数*/



如果假设compute()和somethingComplited()是两个较为耗时的函数。以上的程序在调用doSomething时会先执行somethingComplited(args),然后立即调用回调函数,在onEnd()中又会执行compute(),改写为:
function doSomething(args,callback){
somethingComplited(args);
process.nextTick(callback);
}
            使用process.nextTick()后,改写后的程序会把上面耗时的操作拆分为两个事件,减少每个事件的执行时间,提高事件相应速度。
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();向标准错误六输出当前的调用栈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件项目开发流程

需求分析 1.相关系统分析员向用户初步了解需求,然后用相关的工具软件列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。[1]2.系统分析员深…

node.js util全局变量和事件驱动events

一、util全局变量 1.util.inherits(constructor,superConstructor)此方法是一个实现对象间原型继承的函数。javaScript通过原型赋值来实现继承,细节可参考云哥JS高级视频(原型)。案例看 util/inherits.js定义了一个基础对象Base,原型方法为showName&…

Phoenix 关联查询异常 , MaxServerCacheSizeExceededException phoenix.query.maxServerCacheBytes

参数配置说明:http://phoenix.apache.org/tuning.html Join:http://phoenix.apache.org/joins.html 从设计角度来讲,尽可能的不使用phoenix进行关联查询,速度比直接根据条件查询慢很多很多 测试关联,异常如下 Error:…

面试时,你会问面试官哪些问题?

明天又要去参加一次面试。每次面试的时候,面试官都会在最后给面试者一些时间,来问问题。这是个非常好的机会,能按照自己的思路,来了解职位、技术、企业文化、福利待遇、企业状况和前景等情况,以弥补前面面试过程中没有…

Phoenix 原理 以及 Phoenix在HBase中的应用

一、前言 业务使用HBase已经有一段时间了,期间也反馈了很多问题,其中反馈最多的是HBase是否支持SQL查询和二级索引,由于HBase在这两块上目前暂不支持,导致业务在使用时无法更好的利用现有的经验来查询HBase。虽然HBase本身不支持…

node.js文件操作

介绍:fs模块是文件操作的封装,它提供了文件的读取,写入,更名,删除,遍历目录,链接POSIX文件系统操作。与其他模块不同的是,fs模块中所有的操作都提供了异步和同步两个版本&#xff0c…

Undo/Redo框架实现

http://www.cnblogs.com/wanghui9072229/archive/2011/08/29/2158960.html

phoenix 使用详细介绍 创建二级索引

phoenix 关联hbase 基本使用参考:https://blog.csdn.net/zhangshenghang/article/details/97491597 Phoenix 创建二级索引 hbase中有表test_article ,在表空间 test_ns ,列簇 fn 下有字段 url , text , uid ,name 连接phoenixphoenix-sqlline.py hostname:2181:/hb…

node.js详解Http服务器

概念:Node.js提供了http模块。其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端。http.server是一个基于事件的HTTP服务器。内部有C实现。接口由JavaScript封装。http.request则是一个HTTP客户端工具。用户向服务器发送请求。一、HTTP服务器 http.Server实现的…

C++面试(六)

二. 面试题 1.自我介绍 2.TCP和UDP的区别 3.简述下项目的流程

node.js http客户端

一、http模块提供了两个函数http.request和http.get,功能是作为客户端向HTTP服务器发起请求。 Ext.Ajax.request({},function(response))1.http.request(options,callback)发起HTTP请求,接受两个参数,option是一个类似关联数组的对象&#xf…

C++编程日记

1、操作符“ << ”和 “ >> ” 重载必须以内联方式重载&#xff0c;否则编译时报错&#xff0c;原因暂时不详 &#xff01; 2、int** 可以用于动态创建二维数组 &#xff1b; 3、数组定义必须用常量&#xff0c;不可用变量 &#xff01;

CDH kerberos 认证,安全认证

环境centos 7.4 安装KDC服务 yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation 修改配置文件 vi /etc/krb5.conf 默认如下 修改为 # Configuration snippets may be placed in this directory as well includedir /etc/krb5.conf.d/[logging]default…

虚拟继承和虚表

普通继承和虚拟继承类的大小变化&#xff1a; 普通继承&#xff1a; 虚拟继承&#xff1a; 类A和类B大小为&#xff1a; 由此可见&#xff1a;1、类中静态成员不会影…

node.js Express框架入门

一、为什么要用Express框架&#xff1f; Node.js由于不需要另外的HTTP服务器&#xff0c;因此减少了一层抽象&#xff0c;给性能带了不少的提升&#xff0c;同时也因此提高了开发难度&#xff0c;实现一个POST数据的表单&#xff0c;例如&#xff1a;<form><input typ…

Kerberos 基本命令 - 持续更新

授权添加yarn账户 [rootxxx ~]# kadmin.local Authenticating as principal cloudera-scm/adminJAST.COM with password. kadmin.local: addprinc yarnJAST.COM WARNING: no policy specified for yarnJAST.COM; defaulting to no policy Enter password for principal &quo…

equal_range

equal_range 是C STL中的一种二分查找的算法&#xff0c;试图在已排序的[first,last)中寻找value&#xff0c;它返回一对迭代器i和j&#xff0c;其中i是在不破坏次序的前提下&#xff0c;value可插入的第一个位置&#xff08;亦即lower_bound&#xff09;&#xff0c;j则是在不…

Kerberos 下运行spark 报错 Requested user hdfs is not whitelisted and has id 995,which is below the minimu

异常如下 main : run as user is hdfs main : requested yarn user is hdfs Requested user hdfs is not whitelisted and has id 995,which is below the minimum allowed 1000 问题原因&#xff1a;是由于Yarn限制了用户id小于1000的用户提交作业&#xff1b; 解决方法&a…

node.js工程的结构

我们使用express生成了package.json&#xff0c;它只产生了javascript的app.js和routes/index.js。模版引擎ejs有文件index.ejs&#xff0c;此外还有样式表style.css。12讲问题&#xff1a;创建工程时候一直使用jade。要求用ejs一、app.js 工程的入口。 分析代码&#xff1a;/*…

C++面试(七)

1、 谈谈你做过的项目&#xff0c;你主要负责哪个模块&#xff0c;代码量是多大&#xff08;除去VC自动生成的那些代码&#xff09; 2、 参与项目的人数是多少&#xff1f; 5、 谈谈你对C三个特点的理解&#xff08;简单描述一下&#xff09;。 6、 为什么要封装&#xff0c;如…