Catalyst

JS 笔记:Symbol & 判断数据类型

简介

Symbol是一种基本数据类型。Symbol()会返回一个唯一的值。不是new Symbol()

let s1 = Symbol();
let s2 = Symbol("a");
let s3 = Symbol("a");

console.log(s1 == s2); //false
console.log(s2 == s3); //false
console.log(s1); //[object Symbol]

判断数据类型

javascript 的数据类型有如下几种:

基本类型:

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

引用类型:

  • object:其中又有 function,ArrayDateMap Set WeakMap WeakSet json

使用 typeof 判断数据类型:

function printType(ele) {
  console.log(typeof ele);
}

let group = {
  "1": 1,
  str: "str",
  true: true,
  null: null,
  undefined: undefined,
  symbol: Symbol(),
  "[1,2,3]": [1, 2, 3],
  Date: new Date(),
  json: { a: "aaa" },
};

for (i in group) {
  console.log(i + " " + typeof group[i]);
}

function f() {
  return true;
}
console.log("function " + typeof f);

// 1 number
// str string
// true boolean
// null object
// undefined undefined
// symbol symbol
// [1,2,3] object
// Date object
// json object
// function function 

奇异的是 null 会被判断成 object。经查是历史性 bug

使用 instanceof 判断数据类型

function f() {
  return true;
}

console.log(new Date() instanceof Date); //true
console.log([1, 2, 3] instanceof Array); //true
console.log([1, 2, 3] instanceof Function); //false
console.log(f instanceof Function); //true