zoukankan      html  css  js  c++  java
  • JavaScript中关于隐式转换的一些总结

    JavaScript运算符中的隐式转换规律:
    一、递增递减运算符(前置、后置)
    1.如果包含的是有效数字字符串或者是有效浮点数字符串,则会将字符串转换(Number())为数值,再进行加减操作,返回值的类型是:number类型。
    2.如果不包含有效数字字符串,则会将字符串的值转换为NaN,返回值的类型是:number类型。
    3.如果是boolean类型,则先会把true或者false转换为1或者0,再进行加减操作,返回值的类型是:number类型。
    4.如果是null类型,则先会把null转换为0,在进行加减操作,返回值的类型是:number类型。
    5.如果是undefined,则先会把undefined转换为NaN,再进行加减操作,返回值的类型是:number类型。
    6.如果是对象,则先会通过对象的valueOf()方法,进行转换,如果返回的是NaN,调用toString()方法,在进行前面的操作,返回值的类型是:number类型。(注:空数组[]会返回0,在进行加减操作,空对象则会返回NaN)。

    二、逻辑操作符中的隐式转换规律(注:只有undefined、null、NaN、0、空字符串会被转换为false,其余都为true):
    逻辑操作符一般用于语句判断中。通过判断结果返回的值进行后面的语句操作。
    1.逻辑非(!)操作符:首先会通过Boolean()函数将其操作值转换为布尔值,然后求反。
    2.逻辑与(&&)操作符:如果第一个值经过Boolean()函数转换后为true,则返回第二个操作值,否则返回第一个操作值。如果有一个操作值为null这返回null,如果有一个操作值为undefined,则返回undefined,如果有一个值为NaN,则返回NaN。
    3.逻辑或(||)操作符:如果第一个值经过Boolean()函数转换为false,则返回第二个操作值,否则返回第一个操作值。
    (注:逻辑操作符的运算为短路逻辑运算:前一个条件已经能够得出结果后续条件不再执行!)

    三、关系操作符的隐式转换规律(关系操作符的操作值也可以是任意类型):
    1.如果两个操作值都是数值,则直接比较大小。
    2.如果两个操作值都是字符串,则字符串进行其Unicode编码进行比较。
    3.如果一个操作值是数值,则另一个值转换为数值进行比较。
    4.如果一个操作值是对象,则调用对象的valueOf()和toString()方法,然后再进行上述比较。
    5.如果一个操作值是布尔值,则将布尔值转换为数值再进行比较。
    (注:NaN和任何值都不相等,包括自己,同时它与任何类型比较都会返回false。)

    相等操作符==和===的隐式转换规律:
    1.布尔值、字符串和数值进行比较,会先将其转换为数值再进行比较。
    2.null和undefined比较是相等的,但不是全等的。
    3.NaN与任何值都不相等,都会返回false。

  • 相关阅读:
    composer阿里云短信服务不支持传参为数值--为2017年短信接口,2018阿里云有更新http://www.cnblogs.com/q1104460935/p/8916096.html
    随机生成字符串,数字,手机号,邮箱
    C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (上篇)
    自动升级功能
    C# WinForm 设置按纽为透明,使用背景色
    sql server 2000 单主键高效分页存储过程 (支持多字段排序)
    分页存储过程
    C# WinForm 解决子窗体放大后,子窗体图标放大的问题
    Windows 7/8 64位系统 不能注册32位dll 文件的解决方案
    添加ico图标
  • 原文地址:https://www.cnblogs.com/andy-chen8706/p/4841802.html
Copyright © 2011-2022 走看看