[JavaScript] 数据类型(上)

83 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第 13 天,点击查看活动详情

简单数据类型(原始类型)

Undefined、Null、Boolean、Number、 String 和 Symbol。Symbol(符号)是 ECMAScript 6 新增的。

复杂数据类型

Object是一种无序名值对的集合

typeof操作符

确定任意变量的数据类型

let str = '字符串呀',
    num = 100,
    flag = true;

let nn = null, 
    uu = undefined;
    
let fn = function() {
    console.log('i am function')
}
let arrowSum = (a, b) => {
      return a + b;
};

let sym = Symbol();

let obj = {};

let arr = [1,2,3];

let now = new Date();

let pattern = /at/g;

const m = new Map([
  ["key1", "val1"],
  ["key2", "val2"],
  ["key3", "val3"]
]);

const s = new Set(["val1", "val2", "val3"]);

function* generatorFn() {}
class Person{};

console.log('str:', typeof str) // str: string
console.log('num:', typeof num) // num: number
console.log('flag:', typeof flag) // flag: boolean
console.log('nn:', typeof nn) // nn: object
console.log('uu:', typeof uu) // uu: undefined
console.log('fn:', typeof fn) // fn: function
console.log('arrowSum:', typeof arrowSum) // arrowSum: function
console.log('sym:', typeof sym) // sym: symbol
console.log('obj:', typeof obj) // obj: object
console.log('arr:', typeof arr) // arr: object
console.log('now:', typeof now) // now: object
console.log('pattern:', typeof pattern) // pattern: object
console.log('m:', typeof m) // m: object
console.log('s:', typeof s) // s: object
console.log('generatorFn:', typeof generatorFn) // generatorFn: function
console.log('Person:', typeof Person) // Person: function

通过上面代码输出内容可以看出:对一个值使用 typeof 操作符会返回下列字符串之一
1. undefined表示值未定义;
2. boolean表示值为布尔值;
3. string表示值为字符串;
4. number表示值为数值;
5. object表示值为对象(而不是函数)或 null;
6. function表示值为函数;
7. symbol表示值为符号。

注意:

  • null 返回的是object, 因为特殊值 null 被认为是一个对空对象的引用;
  • 函数在ECMAScript中被认为是对象,并不代表一种数据类型,但函数有自己特殊的属性,使用typeof操作符可以区分函数与其他对象

不同数据类型

Undefined类型

  • 只有一个值:undefined;
  • 使用var或let声明变量没有初始化时,默认就是undefined;
  • 增加这个特殊值的目的就是为 了正式明确空对象指针(null)和未初始化变量的区别;
  • 对声明但未初始化的和未声明的变量调用typeof时,都返回undefined;(提倡声明变量时进行初始化,可以方便区分到底是未声明还是声明了但未初始化)
  • undefined是一个假值,即Boolean(undefined)false;

Null类型

  • 只有一个值:null;
  • typeof null 会返回object,null 值表示一个空对象指针
  • 使用null 来初始化一个对象变量
  • console.log(null == undefined); // true null与undefined表面相等
  • null 是一个假值,即Boolean(null)false;

Boolean类型

  • 有两个字面值:true 和 false
  • 字面值区分大小写的
  • Boolean()转型函数可以在任意类型的数据上调用,而且始终返回一个布尔值。

image.png