第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

node.js中有哪些全局對(duì)象

node.js中有哪些全局對(duì)象

FFIVE 2019-03-13 10:09:09
node.js中有哪些全局對(duì)象
查看完整描述

2 回答

?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

全局對(duì)象與全局變量

global 最根本的作用是作為全局變量的宿主。按照ECMAScript 的定義,滿足以下條 件的變量是全局變量:

在最外層定義的變量;
全局對(duì)象的屬性;
隱式定義的變量(未定義直接賦值的變量)。

當(dāng)你定義一個(gè)全局變量時(shí),這個(gè)變量同時(shí)也會(huì)成為全局對(duì)象的屬性,反之亦然。需要注 意的是,在Node.js 中你不可能在最外層定義變量,因?yàn)樗杏脩舸a都是屬于當(dāng)前模塊的, 而模塊本身不是最外層上下文。

注意: 永遠(yuǎn)使用var 定義變量以避免引入全局變量,因?yàn)槿肿兞繒?huì)污染 命名空間,提高代碼的耦合風(fēng)險(xiǎn)。

process

process 是一個(gè)全局變量,即 global 對(duì)象的屬性。

它用于描述當(dāng)前Node.js 進(jìn)程狀態(tài) 的對(duì)象,提供了一個(gè)與操作系統(tǒng)的簡(jiǎn)單接口。通常在你寫(xiě)本地命令行程序的時(shí)候,少不了要 和它打交道。下面將會(huì)介紹process 對(duì)象的一些最常用的成員方法。

process.argv是命令行參數(shù)數(shù)組,第一個(gè)元素是 node,第二個(gè)元素是腳本文件名, 從第三個(gè)元素開(kāi)始每個(gè)元素是一個(gè)運(yùn)行參數(shù)。

console.log(process.argv);

將以上代碼存儲(chǔ)為argv.js,通過(guò)以下命令運(yùn)行:

$ node argv.js 1991 name=byvoid --v "Carbo Kuo"
[ 'node',
'/home/byvoid/argv.js',
'1991',
'name=byvoid',
'--v',
'Carbo Kuo' ]

process.stdout是標(biāo)準(zhǔn)輸出流,通常我們使用的 console.log() 向標(biāo)準(zhǔn)輸出打印 字符,而 process.stdout.write() 函數(shù)提供了更底層的接口。
process.stdin是標(biāo)準(zhǔn)輸入流,初始時(shí)它是被暫停的,要想從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù), 你必須恢復(fù)流,并手動(dòng)編寫(xiě)流的事件響應(yīng)函數(shù)。

process.stdin.resume();
process.stdin.on('data', function(data) {
process.stdout.write('read from console: ' + data.toString());
});

process.nextTick(callback)的功能是為事件循環(huán)設(shè)置一項(xiàng)任務(wù),Node.js 會(huì)在 下次事件循環(huán)調(diào)響應(yīng)時(shí)調(diào)用 callback。

初學(xué)者很可能不理解這個(gè)函數(shù)的作用,有什么任務(wù)不能在當(dāng)下執(zhí)行完,需要交給下次事 件循環(huán)響應(yīng)來(lái)做呢?

我們討論過(guò),Node.js 適合I/O 密集型的應(yīng)用,而不是計(jì)算密集型的應(yīng)用, 因?yàn)橐粋€(gè)Node.js 進(jìn)程只有一個(gè)線程,因此在任何時(shí)刻都只有一個(gè)事件在執(zhí)行。

如果這個(gè)事 件占用大量的CPU 時(shí)間,執(zhí)行事件循環(huán)中的下一個(gè)事件就需要等待很久,因此Node.js 的一 個(gè)編程原則就是盡量縮短每個(gè)事件的執(zhí)行時(shí)間。process.nextTick() 提供了一個(gè)這樣的 工具,可以把復(fù)雜的工作拆散,變成一個(gè)個(gè)較小的事件。

functiondoSomething(args, callback) {
somethingComplicated(args);
callback();
}
doSomething(functiononEnd() {
compute();
});

我們假設(shè)compute() 和somethingComplicated() 是兩個(gè)較為耗時(shí)的函數(shù),以上 的程序在調(diào)用
doSomething() 時(shí)會(huì)先執(zhí)行somethingComplicated(),然后立即調(diào)用 回調(diào)函數(shù),在 onEnd() 中又會(huì)執(zhí)行
compute()。下面用process.nextTick() 改寫(xiě)上 面的程序:

functiondoSomething(args, callback) {
somethingComplicated(args);
process.nextTick(callback);
}
doSomething(functiononEnd() {
compute();
});

改寫(xiě)后的程序會(huì)把上面耗時(shí)的操作拆分為兩個(gè)事件,減少每個(gè)事件的執(zhí)行時(shí)間,提高事 件響應(yīng)速度。

注意: 不要使用setTimeout(fn,0)代替process.nextTick(callback), 前者比后者效率要低得多。

我們探討了process對(duì)象常用的幾個(gè)成員,除此之外process還展示了process.platform、 process.pid、process.execPath、process.memoryUsage() 等方法,以及POSIX 進(jìn)程信號(hào)響應(yīng)機(jī)制。

console

console 用于提供控制臺(tái)標(biāo)準(zhǔn)輸出,它是由Internet Explorer 的JScript 引擎提供的調(diào)試 工具,后來(lái)逐漸成為瀏覽器的事實(shí)標(biāo)準(zhǔn)。

Node.js 沿用了這個(gè)標(biāo)準(zhǔn),提供與習(xí)慣行為一致的 console 對(duì)象,用于向標(biāo)準(zhǔn)輸出流(stdout)或標(biāo)準(zhǔn)錯(cuò)誤流(stderr)輸出字符。 ? console.log():向標(biāo)準(zhǔn)輸出流打印字符并以換行符結(jié)束。

console.log 接受若干 個(gè)參數(shù),如果只有一個(gè)參數(shù),則輸出這個(gè)參數(shù)的字符串形式。如果有多個(gè)參數(shù),則 以類似于C 語(yǔ)言 printf() 命令的格式輸出。

第一個(gè)參數(shù)是一個(gè)字符串,如果沒(méi)有 參數(shù),只打印一個(gè)換行。

console.log('Hello world');
console.log('byvoid%diovyb');
console.log('byvoid%diovyb', 1991);

運(yùn)行結(jié)果為:

Hello world
byvoid%diovyb
byvoid1991iovyb

console.error():與console.log() 用法相同,只是向標(biāo)準(zhǔn)錯(cuò)誤流輸出。
console.trace():向標(biāo)準(zhǔn)錯(cuò)誤流輸出當(dāng)前的調(diào)用棧。

console.trace();

運(yùn)行結(jié)果為:

Trace:
at Object.<anonymous> (/home/byvoid/consoletrace.js:1:71)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)



查看完整回答
反對(duì) 回復(fù) 2019-03-18
  • 2 回答
  • 0 關(guān)注
  • 550 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)