Nodejs 数据类型

数据类型

基本数据类型(6种)

保存在栈内存的简单数据段,访问方式为按值访问。

  • String
  • Number
  • Boolean
  • Null
  • Undefined
  • Symbol(ES6)

其中null与undefined是特殊的数据类型,Null表示值为空,Undefined表示没有定义; Symbol是在ES6新增加的基本数据类型。

let m = 1;
栈内存
m1
m = 2; // 操作的是变量m中实际保存的值
栈内存
m2
let n = m; // 把m复制到n,栈中创建多一个新的变量n,值为m的值1
栈内存
m1
n1
//然后把m的值2赋予n
m // 1
n // 2
栈内存
m1
n2

引用数据类型

指保存在堆内存中的对象。访问方式是按引用访问。 也就是,变量中保存的只是一个指针,这个指针指向内存中的另一个位置,该位置保存着对象。

  • Object
const Pet = new Object(); // 变量保存的是一个指针,指向堆内存中保存的对象。
栈内存堆内存
Pet引用指针--->Object
// 操作对象时,需要先从栈内存中读取堆内存地址,然后再找到保存在对内存中的值,再操作。
Pet.name = 'dog';
栈内存堆内存
Pet引用指针--->Object{name: 'dog'}
// 复制操作:复制的是栈内存中的指针,复制的指针与原指针指向同一个堆内存中保存的值。
const Animal = Pet;
栈内存堆内存
Pet引用指针--->Object{name: 'dog'}
Animal引用指针___⬆
// 操作的是引用指针指向的Object
Animal.color = 'red';
Pet // { name: 'dog', color: 'red' }
Animal // { name: 'dog', color: 'red' }
Animal === Pet // true
栈内存堆内存
Pet引用指针--->Object{name: 'dog',color:'red'}
Animal引用指针___⬆

类型判断

Node.js里面可以用=====来比较是否相等,二者虽然都可以比较,但是还是有很大区别的。

  • ==: 一般相等(类型一致化之后再进行比较)
  • ===: 严格相等(比较类型和值)

比如:

undefined == null  // true
undefined === null  // false
1 == '1' // true
1 === '1' // false

更多详细信息:mozilla