• JavaScript中的类型转换


    1、隐式类型转换

      ①==  如果相等操作的两个变量不是同一类型,那么相等运算符会尝试进行一些类型转换:

    • 如果一个是null,一个是undefined,则他们相等
    • 如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较;
    • 如果一个是true,则将其转换为1再比较,如果其中一个是false,则将其转换为0再比较;
    • 如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,再进行比较。对象通过toString()或者valueOf()方法转为原始值。JS语言核心的内置类首先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只使用toString()转换。
    • 其他不同类型的比较均不相等。

      ②< > <= >=  比较运算符。操作数可以是任何类型,但是只有数字和字符串才能真正执行比较操作

    • 如果操作数是对象,那么对象先转换为原始值:如果valueOf()返回一个原始值,那么直接使用这个原始值。否则使用toString()转换;
    • 对象转换为原始值之后,如果两个操作数都是字符串,那么按照字符串比较;
    • 对象转换为原始值后,如果至少有一个操作数不是字符串,那么两个都转换为数字进行比较。如果其中一个是NaN,那么结果是false。

      ③-   减操作符将两个操作数都转换为数字

      ④+  加操作符,如果一个操作数是字符串,那么另外一个操作数也会转换为字符串一元加会将其操作数转换为数字

      ⑤!   转换为布尔值并取反。!!x等价于Boolean(x).

    2、显式类型转换

      ①使用Boolean()/Number()/String()/Object()函数。除了null和undefined的任何值都具有toString()方法,这个方法的执行结果通常和String()方法的返回结果一致。

      ②数字转字符串

    • toString()方法,可接受参数,比较转成几进制。
    • toFixed(),参数表示保留几位小数。
    • toExponential(),参数表示保留几位小数点。
    • toPrecision(),参数表示有效数字位数。

      ③字符串转数字

    • parseInt()函数
    • parseFloat()函数,都是全局函数,不是任何类的方法

      ④对象转为原始值

    • toString()方法。
    1. 数组类将每个元素转换为一个字符串,并在元素之间添加逗号合成字符串
    2. 函数类返回这个函数的实现定义的表示方式。
    3. 日期类返回一个可读的日期和时间字符串。
    4. RegExp类转换为直接字面量。
    • valueOf()方法。如果对象存在任意原始值,他将默认将对象转换为表示它的原始值。但是对象是复合值,多数情况下valueOf()返回对象本身。
    • 对象到字符串的转换先使用toString()方法,对象到数字的转换先使用valueOf()方法。
  • 相关阅读:
    micro-fusion & macro-fusion
    Intel Core Microarchitecture Pipeline
    Re-Order Buffer
    汇编效率优化:打破依赖链
    汇编效率优化:指令处理机制
    CABAC总结与补充讨论
    差分方程的零输入响应与零状态响应
    线性差分方程的迭代分析法
    二阶线性差分方程中的根/特征值的讨论
    VMware 快速克隆出多个 Linux centos7 环境
  • 原文地址:https://www.cnblogs.com/zczhangcui/p/6253570.html
Copyright © 2020-2023  润新知