博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中强制类型转换
阅读量:5241 次
发布时间:2019-06-14

本文共 941 字,大约阅读时间需要 3 分钟。

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

转载于:https://www.cnblogs.com/zhuhuoxingguang/p/6264921.html

你可能感兴趣的文章
网站sqlserver提权操作
查看>>
PHP变量作用域以及地址引用问题
查看>>
实验四
查看>>
Elastic Stack-Elasticsearch使用介绍(三)
查看>>
MacOS copy图标shell脚本
查看>>
第八章 方法
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>
Not enough free disk space on disk '/boot'(转载)
查看>>
android 签名
查看>>
堆 栈
查看>>
Kth Smallest Element in Unsorted Array
查看>>
vue项目中使用百度统计
查看>>
android:scaleType属性
查看>>
SuperEPC
查看>>
RBAC用户角色权限设计方案
查看>>
thymeleaf
查看>>
CentOS7安装iptables防火墙
查看>>
mysql-5.7 innodb 的并行任务调度详解
查看>>