首页 > Web开发 > 详细

JS进阶(一)数据类型与隐式转换

时间:2020-07-12 20:39:16      阅读:76      评论:0      收藏:0      [点我收藏+]

1)基本数据类型

string、 number、null、undefined、 boolean、bigInt、symbol

Number类型中NaN不是有效数字但是属于Number类型,typeof NaN  //=> ‘number‘
NaN === NaN  // => false
Object.is(NaN,NaN)  // => true
BigInt出现的意思是保证超出最大最小安全值仍然可以准确计算
console.log(Number.MAX_SAFE_INTEGER); //=>9007199254740991
console.log(Number.MIN_SAFE_INTEGER); //=>-9007199254740991
9007199254740991n  =>bigint类型的

(2)引用数据类型【2】

  • object
  •     普通对象 {} 
  •     实例对象 new xxx
  •     日期对象 new Date
  •     正则对象 new RegExp
  •     原型对象 prototype
  •     数组对象 Set Array
  • ....
  • function

2.数据类型的检测

1.typeof
能检测基本类型和函数类型,但是对于对象类型和null不能区分(null为计算机历史遗留问题)
typeof function(){} // ‘function’
typeof NaN // ‘number’
2.constructor
[].constructor === Array
3.instanceof
4.Object.prototype.toString.call()
Object.prototype.toString.call([]) // “[object Array]”

3.数据类型的隐式转换

(1)转化为Number类型的情况

  • 使用Number显式类型转换, 转换过程中,遇到对象会先toString然后在Number转换

  • 例子:
    Number()、Number(null)、Number("")、Number(false) 结果为 0
    Number(undefined) 、 Number({})、 Number(‘wds’), 结果为 NaN
    Number(true) , 转化结果为 1
    Number([‘2222’]) 结果为 2222
    Number([‘2222’,‘1111’]) 结果为NaN
    Number(‘1,2’)
    ————————————————

  • 使用加号减号等运算符隐式转换, 转换过程中,遇到对象会先toString然后在Number转换

     

  • 例子:
    
    ‘123’ 结果为 123
    [] 、+null、+false 结果为 0
    {}、+ ‘abc’ 、+ undefined 结果为 NaN
    true 结果为 1
    1 + true 结果为 2
    注意??: NaN + 任何数都是NaN、字符串和对象除外,会转成字符串拼接
    NaN+123、NaN+ true、NaN+NaN 结果都为NaN
    NaN + {} 结果为 “NaN[object Object]”
    NaN + [] 结果为 “NaN”
    

    使用isNaN进行检测的时候,会隐式转换为数字在检测,转换过程中,遇到对象会先toString然后在Number转换  

JS进阶(一)数据类型与隐式转换

原文:https://www.cnblogs.com/tooko/p/13289716.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!