前端重新开始 -- 数据类型

101 阅读1分钟

数据类型分类

参考

原始数据类型(Primitive)

原始类型有七种 五种,分别是:
  • String
  • Number
  • Boolean
  • undefined
  • null
  • BigInt
  • Symbol

引用数据类型(Reference)

  • Object
  • Map
  • Set
  • Array
  • Function
  • ...

判断数据类型

typeof
  • typeof('1') === 'string'
  • typeof(1) === 'number'
  • typeof(true) === 'boolean'
  • typeof(undefined) === 'undefined'
  • typeof(Symbol) === 'symbol 引用类型null tyoeof()结果都是object
instanceof 判断引用类型
  • Object
  • Array
  • Map
  • Set
  • Function
constructor 判断

可以判断class 实例化的对象 例如

var e = new Event('ss')
undefined
e.constructor
ƒ Event() { [native code] }

数据类型的转换

原始类型的转换

Number <==> String
  • parseInt('1')

  • parseFloat('1')

  • '1' * 1

  • '1' - 0

  • Number('1')

  • 1 + ''

  • String(1)

转换Boolean
  • !data 取非
  • !!data 转换成Boolean
  • Boolean(data)
Boolean => Number
  • Number(true) = 1
  • Number(false) = 0

+ - * /时的类型转换

  • '+'
    • 当有字符串时,所有转换成字符串;
    • 当没有字符串时,所有转换成数字计算;
  • '-'/''/''
    • 一律尝试转换成数字计算;

引用类型的toString vs valueOf

当引用类型同时实现了toString / valueOf 方法时,直接使用对象,javascript 会尝试根据代码的用途来判断是使用哪种方法

var Parent = function(name,age){
    this.name = name;
    this.age = age;
}
Parent.prototype = {
    toString: function(){
        return this.name;
    },
    valueOf: function(){
        return this.age;
    }
}
let pp = new Parent('sfg',32)
'a'.concat(pp)
// "asfg"
pp + 1
// 33

此处需要注意的是 '123' + pp //'12332' 因为是 + 所以会使用valueOf方法,但马上会被转成字符串进行计算;