变数

Node.js 变数

函式方法

变数 说明
typeof 变数类型
instanceof 类别类型
constructor 建构值

typeof 变数类型

console.log(typeof undefined) // undefind
console.log(typeof null)      // object
console.log(typeof true)      // boolean
console.log(typeof 43)        // number
console.log(typeof '21')      // string
console.log(typeof {a:1})     // object
console.log(typeof [1])       // object
console.log(typeof Symbol())  // symbol
console.log(typeof 123n)      // bigint

function a() {}
console.log(typeof a)         // function

var date = new Date()
var error = new Error()
console.log(typeof date)      // object(这种被new出来的型态为ojbect)
console.log(typeof error)     // object(这种被ne出来的型态为ojbect)

instanceof 类别类型

判断A是否为B的实例,如果 A 为 B 的实例则true。如果否则返回false

console.log(12 instanceof Number)  // false
console.log('22' instanceof String)  // false
console.log(true instanceof Boolean) // false
console.log(null instanceof Object) // false
console.log(undefined instanceof Object) // false

console.log([] instanceof Array)   // true
console.log({a: 1} instanceof Object) // true
console.log(json instanceof Object) // true

function a() {}
console.log(a instanceof Function)  // true
console.log(new Date() instanceof Date)  //true

console.log(reg instanceof RegExp) //true
console.log(error instanceof Error) // true

constructor 建构值

console.log('22'.constructor === String)             // true
console.log(true.constructor === Boolean)            // true
console.log([].constructor === Array)                // true
console.log(document.constructor === HTMLDocument)   // true
console.log(window.constructor === Window)           // true
console.log(new Number(22).constructor === Number)   // true
console.log(new Function().constructor === Function) // true
console.log((new Date()).constructor === Date)       // true
console.log(new RegExp().constructor === RegExp)     // true
console.log(new Error().constructor === Error)       // true

全域变数 global

类似浏览器 JavaScript 的 window 变数,但是在 Node.js 使用的是 global 变数

// test.js
console.log(global)

<ref *1> Object [global] {
  global: [Circular *1],
  clearInterval: [Function: clearInterval],
  clearTimeout: [Function: clearTimeout],
  setInterval: [Function: setInterval],
  setTimeout: [Function: setTimeout] {
    [Symbol(nodejs.util.promisify.custom)]: [Getter]
  },
  queueMicrotask: [Function: queueMicrotask],
  performance: Performance {
    nodeTiming: PerformanceNodeTiming {
      name: 'node',
      entryType: 'node',
      startTime: 0,
      duration: 66.41221900098026,
      nodeStart: 5.158950999379158,
      v8Start: 6.645998999476433,
      bootstrapComplete: 44.11822099983692,
      environment: 27.58743800036609,
      loopStart: -1,
      loopExit: -1,
      idleTime: 0
    },
    timeOrigin: 1648638204321.951
  },
  clearImmediate: [Function: clearImmediate],
  setImmediate: [Function: setImmediate] {
    [Symbol(nodejs.util.promisify.custom)]: [Getter]
  }
}

定义全域变数

非必要儘量少用,壁面变数被汙染,毕竟全部的程式都可以存取修改全域变数

global.uuid = require('uuid');

console.log(global.uuid);

作业系统 os

const os = require('os');

console.log(os.type());
console.log(os.version());
console.log(os.homedir());

// Darwin
// Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:23 PDT 2021; root:xnu-8019.41.5~1/RELEASE_X86_64
// /Users/kj
变数 说明
os.type() 类型
os.version() 版本
os.homedir() 目录

路径 path

const path = require('path');

// /Users/kj/Code/node.js/test.js
console.log(__filename);
// /Users/kj/Code/node.js
console.log(path.dirname(__filename));
// test.js
console.log(path.basename(__filename));
// .js
console.log(path.extname(__filename));
// {
//   root: '/',
//   dir: '/Users/kj/Code/nodejs',
//   base: 'test.js',
//   ext: '.js',
//   name: 'test'
// }
console.log(path.parse(__filename));
console.log(path.join(__dirname, 'files', 'test.json'));
变数 说明
path.dirname() 目录名称
path.basename() 档案名称
path.extname() 副档名
path.parse() 解析路径
path.join() 根据作业系统合併产生档案路径,产生不同的 /\ 的路径

常数

// /Users/kj/Code/nodejs-leetcode
console.log(__dirname);

// /Users/kj/Code/nodejs/test.js
console.log(__filename);
变数 说明
__dirname 档案放置目录路径
__filename 档案放置路径,含档名

系统程序 process

console.log(process);
变数 说明
process.env 环境变数
process.cwd 目前目录
process.version 目前 Node.js 版本
process.memoryUsage() 记忆体使用状况
process.exit() 结束程式
process.uptime() 程式执行时间

process.memoryUsage() 记忆体使用状况

// {
//     rss: 22528000,
//     heapTotal: 4882432,
//     heapUsed: 3964376,
//     external: 224473,
//     arrayBuffers: 11158
// }
// 一开始使用的记忆体
console.log(process.memoryUsage());
// 建立一个很佔空间的变数
var a = new Array(1e7);

// {
//     rss: 103391232,
//     heapTotal: 85159936,
//     heapUsed: 84305032,
//     external: 286011,
//     arrayBuffers: 11158
// }
// 目前使用的记忆体
console.log(process.memoryUsage());
a = null;  // 把 a 变成 null
// {
//     rss: 103403520,
//     heapTotal: 85159936,
//     heapUsed: 84310528,
//     external: 286011,
//     arrayBuffers: 11158
// }
console.log(process.memoryUsage());  // 后来使用的记忆体

call by value 传值

  • String
  • Number
  • Boolean
  • Null
  • Undefined
  • Symbol

call by reference 传址

  • Object
  • Array
  • Function

参考资料


定义变数

Node.js 定义变数

Number 数字

Node.js Number 数字

String 字串

Node.js String 字串

Array 阵列

Node.js Array 阵列

Function 函式

Node.js Function 函式

内建函式

Node.js 内建函式

Math 数学运算

Node.js Math 数学运算

Object 物件

Node.js Object 物件

Class 类别

Node.js Class 类别

Closure 闭包

Node.js Closure 闭包

Map

Node.js Map

Set

Node.js Set

this

Node.js this