JS类型转换

显示类型转换
  • Number()

    • Number(undefined(特殊) / null / true / '123abc' / '' / NaN / '1 23' / {} / new Date(2020, 6, 1));

    • NaN / 0 / 1 / NaN / 0 / NaN / NaN / NaN / 1593532800000;

  • parseInt()

    • 只传一个参数,则只关注数字和以数字开头的字符串,其余均返回NaN,取整直接去小数,不四舍五入,parseInt('100.9px'); 100 parseInt('10. 123'); 10

    • 可传第二个参数作为进制,将第一个参数当成指定的进制转换成十进制,范围2 - 36

    • 例如parseInt('10' / 'b',16); 16 / 11; parseInt(3,2); NaN

  • parseFloat()

    • parseInt类似,但转化的是小数,且没有第二个参数
  • String()

    • String(true / undefined / null / NaN / {}); 'true' 'undefined' 'null' 'NaN' '[object Obeject]'
  • Boolean()

    • Boolean(undefined / null / 0 / false / NaN / ""); false 其余均为true
  • toString()

    • undefined null无法使用

    • 可传参数把指定值转换成指定的进制,例如var a = 8; a.toString(2); 1000

隐式类型转换
  • 其实内部还是调用显示类型转换的方法

  • isNaN()

    • 使用Number()方法转换指定值,再看转换后的结果是不是NaN,是就返回true,不是就返回false
  • ++ -- +(正) -(负)

    • 调用Number()方法
  • +(加)

    • 调用String()Number()
  • - * / %

    • 调用Number()
  • && || !

    • 调用Boolean(),但是返回的值可能不是Boolean类型
  • < > <= >=

    • 两个字符串比较的是ascii码,有一个数字则调用Number()

    • 2 > 1 > 3; false; 'abc' > 'acd'; false;

  • == !=

    • 调用Number()toPrimitive()valueOftoString()

    • 对象比较,调用toPrimitive,该方法会先调用valueOf方法,若返回原始值(一般包装类返回原始值),则直接返回该原始值,否则,调用该对象toString()方法,若返回原始值,则直接返回该原始值

    • 1 == true; true; 1 == '1'; true;

    • null,undefined不大于不小于也不等于0,但是null == undefined

  • === !==

    • 没有隐式类型转换,两边必须完全相同,长得一样,类型也要相同,如果是对象,则比较地址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容