日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
面試官:說說Node.js有哪些全局對象?

[[403180]]

本文轉載自微信公眾號「JS每日一題」,作者灰灰。轉載本文請聯系JS每日一題公眾號。

為仙居等地區(qū)用戶提供了全套網頁設計制作服務,及仙居網站建設行業(yè)解決方案。主營業(yè)務為網站設計制作、做網站、仙居網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

 一、是什么

在瀏覽器 JavaScript 中,通常window 是全局對象, 而 Nodejs中的全局對象是 global

在NodeJS里,是不可能在最外層定義一個變量,因為所有的用戶代碼都是當前模塊的,只在當前模塊里可用,但可以通過exports對象的使用將其傳遞給模塊外部

所以,在NodeJS中,用var聲明的變量并不屬于全局的變量,只在當前模塊生效

像上述的global全局對象則在全局作用域中,任何全局變量、函數、對象都是該對象的一個屬性值

二、有哪些

將全局對象分成兩類:

  • 真正的全局對象
  • 模塊級別的全局變量

真正的全局對象

下面給出一些常見的全局對象:

  • Class:Buffer
  • process
  • console
  • clearInterval、setInterval
  • clearTimeout、setTimeout
  • global

Class:Buffer

可以處理二進制以及非Unicode編碼的數據

在Buffer類實例化中存儲了原始數據。Buffer類似于一個整數數組,在V8堆原始存儲空間給它分配了內存

一旦創(chuàng)建了Buffer實例,則無法改變大小

process

進程對象,提供有關當前過程的信息和控制

包括在執(zhí)行node程序的過程中,如果需要傳遞參數,我們想要獲取這個參數需要在process內置對象中

啟動進程:

 
 
 
 
  1. node index.js 參數1 參數2 參數3 

index.js文件如下:

 
 
 
 
  1. process.argv.forEach((val, index) => { 
  2.   console.log(`${index}: ${val}`); 
  3. }); 

輸出如下:

 
 
 
 
  1. /usr/local/bin/node 
  2. /Users/mjr/work/node/process-args.js 
  3. 參數1 
  4. 參數2 
  5. 參數3 

除此之外,還包括一些其他信息如版本、操作系統等

console

用來打印stdout和stderr

最常用的輸入內容的方式:console.log

 
 
 
 
  1. console.log("hello"); 

清空控制臺:console.clear

 
 
 
 
  1. console.clear 

打印函數的調用棧:console.trace

 
 
 
 
  1. function test() { 
  2.     demo(); 
  3.  
  4. function demo() { 
  5.     foo(); 
  6.  
  7. function foo() { 
  8.     console.trace(); 
  9.  
  10. test(); 

clearInterval、setInterval

設置定時器與清除定時器

 
 
 
 
  1. setInterval(callback, delay[, ...args]) 

callback每delay毫秒重復執(zhí)行一次

clearInterval則為對應發(fā)取消定時器的方法

clearTimeout、setTimeout

設置延時器與清除延時器

 
 
 
 
  1. setTimeout(callback,delay[,...args]) 

callback在delay毫秒后執(zhí)行一次

clearTimeout則為對應取消延時器的方法

global

全局命名空間對象,墻面講到的process、console、setTimeout等都有放到global中

 
 
 
 
  1. console.log(process === global.process) // true 

模塊級別的全局對象

這些全局對象是模塊中的變量,只是每個模塊都有,看起來就像全局變量,像在命令交互中是不可以使用,包括:

  • __dirname
  • __filename
  • exports
  • module
  • require

__dirname

獲取當前文件所在的路徑,不包括后面的文件名

從 /Users/mjr 運行 node example.js:

 
 
 
 
  1. console.log(__dirname); 
  2. // 打印: /Users/mjr 

__filename

獲取當前文件所在的路徑和文件名稱,包括后面的文件名稱

從 /Users/mjr 運行 node example.js:

 
 
 
 
  1. console.log(__filename); 
  2. // 打印: /Users/mjr/example.js 

exports

module.exports 用于指定一個模塊所導出的內容,即可以通過 require() 訪問的內容

 
 
 
 
  1. exports.name = name; 
  2. exports.age = age; 
  3. exports.sayHello = sayHello; 

module

對當前模塊的引用,通過module.exports 用于指定一個模塊所導出的內容,即可以通過 require() 訪問的內容

require

用于引入模塊、 JSON、或本地文件??梢詮?node_modules 引入模塊。

可以使用相對路徑引入本地模塊或JSON文件,路徑會根據__dirname定義的目錄名或當前工作目錄進行處理

參考文獻

http://nodejs.cn/api/globals.html

https://vue3js.cn/interview


當前文章:面試官:說說Node.js有哪些全局對象?
瀏覽路徑:http://m.5511xx.com/article/ccsgspp.html