美文网首页
js 隐式类型转换总结

js 隐式类型转换总结

作者: 摆渡侠 | 来源:发表于2020-03-25 10:30 被阅读0次

    +

    • 两个操作数都是数值,就是数值操作
    • 有一个操作数是字符串,就执行字符串拼接
    • 其他情况都先执行String()方法进行类型转换成String类型,然后进行字符串拼接
      (注意:这里有个有趣的地方 console.log({} + [])打印 0, console.log([] + {})打印'[object Object]' 这里第一种是为什么呢, 因为js解析引擎会将{} 开头作为一个模块解析,其实就是什么也没有只执行了 + []的操作)

    >、<、>=、<=

    • 除了两个操作数都是字符串的情况,其他都转换成Number类型比较大小
    • 任何操作数与NaN进行比较,结果都是false
    • 对于两个操作数都是字符串,比较的是字符串的字符编码

    ==、!=

    • 强制类型转换,一般都是转换为数值
    • 这里判断的相等只能说明值相等(对于基本类型)或引用相等(对于引用类型),并不能说明类型也一致。
    • NaN和任何值都不相等
    • 对象相等是指向同一对象才相等
    • undefined == null 返回true,因为ECMA262规定的
    • 如果 x 或 y 中有一个为 NaN,则返回 false;
    • 如果 x 与 y 皆为 null 或 undefined 中的一种类型,则返回 true(null == undefined // true);否则返回 false(null == 0 // false);
    • 如果 x,y 类型不一致,且 x,y 为 String、Number、Boolean 中的某一类型,则将 x,y 使用 toNumber 函数转化为 Number 类型再进行比较;
    • 如果 x,y 中有一个为 Object,则首先使用 ToPrimitive 函数将其转化为原始类型,再进行比较。

    if语句、条件操作符 、! 、while语句

    • 这种针对Boolean类型的,因此对其他类型应用这些操作符时,自动执行Boolean()函数

    如果有什么错误或者不准确的地方欢迎指正。

    相关文章

      网友评论

          本文标题:js 隐式类型转换总结

          本文链接:https://www.haomeiwen.com/subject/duktuhtx.html