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(中)》。
javascript中强制类型转换的更多相关文章
- JavaScript中数据类型转换总结
JavaScript中数据类型转换总结 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = " ...
- java中强制类型转换
在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...
- C语言中强制类型转换总结
C语言中强制类型转换总结 ● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围 ...
- c#中的里氏转换和Java中强制类型转换在多态中的应用
在c#中: 注意: 子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数. 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员.但是父 ...
- javascript的强制类型转换
1.toString (1)调用toString方法 Array是将数组中的每个元素字符串化,并使用逗号拼接起来 object返回的是内部属性[[Class]]的值,[object Object] n ...
- javascript中的类型转换,宽松相等于严格相等
为了将值转换为基本类型值(string,number,boolean,null,undefined),抽象操作ToPrimitive会首先检查该值有没有valueOf()方法,如果有并且返回基本类型值 ...
- [翻译]解释JavaScript中的类型转换
原文地址:JavaScript type coercion explained 类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转换为数值,对象转换为布尔值,等等).任何类型,无论是原始类型 ...
- 【你不知道的javaScript 中卷 笔记2】javaScript中的类型转换
1.1 对象内部属性 [[Class]] 常见的原生函数: String() Number() Boolean() Array() Object() Function() RegExp() Date( ...
- JS中强制类型转换
JavaScript提供了3种强制类型转换的方法 一.Boolean()方法 该方法将指定的参数转换成布尔型.Boolean(object).参数object可以是字符串对象.数值对象.DOM对象等. ...
随机推荐
- 驱动程序环境搭配(VS2010 + WDK + VirtualDDK + VMware)good
http://www.cnblogs.com/BoyXiao/archive/2011/07/31/2122755.html
- 【HDOJ】5288 OO’s Sequence
二分寻找对于指定pos的最左因数点和最右因数点. /* 5288 */ #include <iostream> #include <string> #include <m ...
- git ignore 的使用
http://www.barretlee.com/blog/2015/09/06/set-gitignore-after-add-file/ 需要注意的 **: 如果一个 pattern 以 ** 开 ...
- oracle报错ORA-01507
SHUTDOWN IMMEDIATE; STARTUP NOMOUNT; CONTROL1.CTL文件复制到CONTROL2.CTL; ALTER SYSTEM SET CONTROL_FILES=' ...
- Asp.Net 前后台交互小结
转自:http://blog.csdn.net/wlccomeon/article/details/17270427 一.前台调用后台 前台调用后台的方法一共可分为两大类:使用Ht ...
- glsl-UBO
UBO 是什么?为何要用UBO? 1.数据共享设计 采用Block的原因是: 如果你的程序中包含了多个着色器,而且这些着色器使用了相同的Uniform变量,你就不得不为每个着色器分别管理这些变量.Un ...
- input框自动填充内容背景颜色为黄色解决方法
谷歌浏览器input自动填充内容,背景色会是黄色,想改的话: input:-webkit-autofill { box-shadow: 0 0 0px 1000px white inset;} 这种方 ...
- leecode 树是否是平衡树 java
https://oj.leetcode.com/problems/validate-binary-search-tree/ 1.中序遍历是否有序 /** * Definition for binary ...
- (DT系列一)DTS结构及其编译方法
DTS结构及其编译方法 一:主要问题 1,需要了解dtsi与dts的关系 2,dts的结构模型 3,dts是如何被编译的,以及编译后会生成一个什么文件. 二:参考文字 1,DTS(device tre ...
- maven构建带版本号和日期的war包名
21166312 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !import ...