zoukankan      html  css  js  c++  java
  • javascript中强制类型转换

     javascript开发过程中,强制类型转换一般发生在条件判断和==运算符。其他情况,发生的类型转换(与这两种情况也是基本类似,属于万变不离其宗的范畴),暂不讨论。

    == 双等运算符

    考虑代码: a == b

    如果a、b的类型一致,则不涉及任何强制类型转换的功能,不在这里讨论。

    1、 基本类型值 null == undefined //true

      在双等运算符两边如果是undefined 和 null,则返回的结果为true。也就只有在==的时候,null和undefined相等,除此之外,都不存在这种情况。

    2、a和b两者的类型,一个为number类型,一个为string类型

      则将字符串类型隐式执行 Number(字符串),然后再判断是否相等。即判断ToNumber(a) == b  或者 a == ToNumber(b);

    3、其中一个是布尔类型,另一个是其他类型

      首先将布尔值类型,装换为数字类型,再参与比较,即执行 ToNumber(a)== b 或者 a == ToNumber(b);

      可以看到,目标都是往数字类型转换,再参与两者的比较。

    4、对象和非对象之间的比较

      非对象主要是指字符串和数字类型,(布尔类型值会自动转换为数字类型的),这种情况下,会将对象类型的值,执行ToPrimitive,转换为基本类型值,再参与==运算符的判断。

      可以看出,在执行==运算比较的时候,强制类型转换的方向都是数字类型。

    条件判断语句:

        if (...)   条件判断表达式 

      for(;...;) for循环语句中的第二条语句

      while(...)  循环中的条件判断表达式

      ...? :  三目运算符的条件判断表达式

      && ||  逻辑运算符

    这几种情况下,也会产生强制类型转换。会将非布尔值隐式转换为布尔值,然后参与条件判断。其中关于逻辑运算符,在前文《逻辑运算符——逻辑与&&、逻辑或||》做过介绍,请跳转查阅。

    项目开发中,可能比较多的涉及到的强制类型转换就是这些,其他还有一些请参阅专业书籍。本文主要参考的是《你不知道的javascript(中)》。

  • 相关阅读:
    jquery流行的插件收集
    简单遮罩层
    生成任意位数随机验证码
    30个图片浏览插件收集
    [转载]12个jQuery Lightbox效果插件
    jqzoom图片放大镜效果
    23个超流行的jQuery相册插件收集
    在suse上创建UDEV Rules For RAC OCR And Voting Devices
    /etc/fstab文件中的一些参数
    Oracle提供的自治事务记录日志的方法
  • 原文地址:https://www.cnblogs.com/zhuhuoxingguang/p/6264921.html
Copyright © 2011-2022 走看看