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(中)》。

javascript中强制类型转换的更多相关文章

  1. JavaScript中数据类型转换总结

    JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...

  2. java中强制类型转换

    在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...

  3. C语言中强制类型转换总结

    C语言中强制类型转换总结  ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...

  4. c#中的里氏转换和Java中强制类型转换在多态中的应用

    在c#中: 注意: 子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数. 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员.但是父 ...

  5. javascript的强制类型转换

    1.toString (1)调用toString方法 Array是将数组中的每个元素字符串化,并使用逗号拼接起来 object返回的是内部属性[[Class]]的值,[object Object] n ...

  6. javascript中的类型转换,宽松相等于严格相等

    为了将值转换为基本类型值(string,number,boolean,null,undefined),抽象操作ToPrimitive会首先检查该值有没有valueOf()方法,如果有并且返回基本类型值 ...

  7. [翻译]解释JavaScript中的类型转换

    原文地址:JavaScript type coercion explained 类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转换为数值,对象转换为布尔值,等等).任何类型,无论是原始类型 ...

  8. 【你不知道的javaScript 中卷 笔记2】javaScript中的类型转换

    1.1 对象内部属性 [[Class]] 常见的原生函数: String() Number() Boolean() Array() Object() Function() RegExp() Date( ...

  9. JS中强制类型转换

    JavaScript提供了3种强制类型转换的方法 一.Boolean()方法 该方法将指定的参数转换成布尔型.Boolean(object).参数object可以是字符串对象.数值对象.DOM对象等. ...

随机推荐

  1. 李洪强iOS开发之-环信02.3_具体接口讲解 - Apple Docs

    http://www.easemob.com/apidoc/ios/chat3.0/annotated.html Apple Docs.

  2. [转贴]漫谈C语言及如何学习C语言

    抄自http://my.oschina.net/apeng/blog/137911,觉得很有用,收藏它 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3, ...

  3. 剖析Qt的事件机制原理

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消息循环和WinMai ...

  4. VirtualBox虚拟机中启用usb3.0却无法显示u盘的解决方法

    主机系统为win7 64位,由于工作需要,安装了Virtualbox 5.18虚拟机,virtaulbox中安装了win7 32系统.以为下启用usb 3.0的步骤: 1.宿主机要支持 usb 3.0 ...

  5. dump datafile block

    Oracle dump datafile block有两种方式: 然后根据block id执行dump 命令: SQL> alter system dump datafile 4 block 2 ...

  6. POJ_3616_Milking_Time_(动态规划)

    描述 http://poj.org/problem?id=3616 给奶牛挤奶,共m次可以挤,给出每次开始挤奶的时间st,结束挤奶的时间ed,还有挤奶的量ef,每次挤完奶要休息r时间,问最大挤奶量. ...

  7. awk将普通文本转换成json文件

    script1: #!/bin/bash #Date:-- #Author:eivll0m awk -F"\t" -vq='"' '{ a[$]=a[$]?a[$]:$ ...

  8. [LeetCode] 73. Set Matrix Zeroes 解题思路

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Follow ...

  9. admin-openrc

    #!/bin/bash # To use an Openstack cloud you need to authenticate against keystone, which # returns a ...

  10. hyperVisor

    当前主要的hyperVisors:VMware vSphere.微软Hyper-V.Citrix XenServer .IBM PowerVM.Red Hat Enterprise Virtuliza ...