基础-js数据类型

边界数据类型条件判断问题

数据类型概念

基本数据类型:undefined  null  boolean  string  number  symbol  bigint

引用数据类型:onject(array  date  regexp  math  function)

储存位置:基本数据类型储存在栈内存中,引用数据类型指针储存 在栈内存,值储存在堆内存中,拷贝时一般拷贝的是引用地址

数据类型判断或检测方法

如:如何判断一个对象是否是数组

数据类型判断方法:

(1)typeof:可以检测基本数据类型(null 除外,使用  typeof null--->object(×,为js的bug) ),不能准确检测复杂数据类型(注意:返回的值都为小写)

(2)instanceof:可以检测复杂数据类型,但不判断基本数据类型,用于检测返回值为Object的复杂数据类型

(3)Object.prototype.toString.call(data): 可以检测基本数据类型也可以检测复杂数据类型。会得到 [onject Xxxx]的类型,Xxxx第一个字母大写

eg:

Object.prototype.toString.call(1)-->[object Number]

Object.prototype.toString.call(true)-->[object Boolean]

Object.prototype.toString.call('123')-->[object String]      

Object.prototype.toString.call({})-->[object Object]

Object.prototype.toString.call(window)-->[object Window]

封装-检测数据类型的方法:

function getType (obj) {

    let type = typeof obj

    if( type !== 'object' ) {  // 使用typeof判断,如果是基本数据类型则返回

          return type 

    }

     // 非基本数据类型,即复杂数据类型的判断

     return Object.prototype.toString.call(obj).replace(/^ \[ object(\S+) \] $/, '$1')

}

getType([])-->Array,toString得到

getType(true)-->boolean,typrof得到

getType('123')-->string,typeof得到

getType(/\d*/)-->Regexp,tostring得到

数据类型的转换方法

(1)强制类型转换

Number()  parseInt()  parseFloat()  toString()  String()  Boolean()

Numberg转换规则:将非数字类型转为数字类型

要转布尔值-->会转为0,1

转数字-->返回数字

转null,空字符串-->返回0

转undefined-->NaN

转Symbol-->抛错

(2)隐式类型转换,表达式里出现逻辑运算符、运算符、关系操作符、相等运算符、if/while条件,遇到两种运算不同的表达式,都是隐式转换

你可能感兴趣的:(javescript使用,webpack,学习,javascript,js,object,html5,vue.js)