基础-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条件,遇到两种运算不同的表达式,都是隐式转换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值