JS在if中的强制类型转换方式


Posted in Javascript onJuly 15, 2018

众所周知,JS在很多情况下会进行强制类型转换,其中,最常见两种是:

1.使用非严格相等进行比较,对==左边的值进行类型转换

2.在if判断时,括号内的值进行类型转换,转化为布尔值

今天,我就来聊一聊JS在if中的强制类型转换。

其实,如果详细要讨论哪些值在if中强制转换为true,哪些值在if中强制转换为false,这很困难,因为,情况太多了。但是,我们可以轻松记住强制类型转换结果,为什么?因为,大多数情况下,都是转换为true,只有四种情况会转换为false。此时,我们只需要记住转换为false的那四种情况就可以了。

强制转换为false的四种情况

在if中进行强制转换为false的情况只有四种,分别是:

1.数字0

2.NaN

3.空字符串

4.null或undefined

很多人会问,为什么null和undefined会在一起?因为,在非严格相等的情况下,null和undefined是相等的。

null == undefined    // true
// 两种写法相等
a == null
a === null || a === undefined

如何判断引用数组和对象是否为空

很多时候,我们会碰上这种情况,即在if中判断数组或对象是否为空。如果直接判断的话,依据之前的理论,不管是不是空数组或对象最后都是true,因为数组或对象会强制转换为true。

判断数组是否为空很简单,只需要访问它的length属性即可。那对象该怎么办?

这里可以使用Object.keys方法对对象属性进行遍历,该方法返回一个包含对象属性的数组,如果数组长度为0,即代表为空。当然,这种情况并不完全严谨,因为,对象可能存在不可枚举属性。

var arr = []
arr.length = 0
var obj = {}
Object.keys(obj).length = 0

总结

以上所述是小编给大家介绍的JS在if中的强制类型转换,希望对大家有所帮助,如果对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的

Javascript 相关文章推荐
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
SuperSlide2实现图片滚动特效
Jun 20 Javascript
JS数组(Array)处理函数整理
Dec 07 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
Oct 10 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
Sep 13 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
Aug 03 Javascript
VUE路由动态加载实例代码讲解
Aug 26 Javascript
使用layui实现树形结构的方法
Sep 20 Javascript
vue2.0实现列表数据增加和删除
Jun 17 Javascript
微信小程序form表单组件示例代码
Jul 15 #Javascript
微信小程序仿朋友圈发布动态功能
Jul 15 #Javascript
Bootstrap Table中的多选框删除功能
Jul 15 #Javascript
详解JavaScript 中 if / if...else...替换方式
Jul 15 #Javascript
简述JS控制台的使用
Jul 15 #Javascript
简述JS浏览器的三种弹窗
Jul 15 #Javascript
Vue路由钩子之afterEach beforeEach的区别详解
Jul 15 #Javascript
You might like
多文件上传的例子
2006/10/09 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
python实现简单的socket server实例
2015/04/29 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
一年级学生期末评语
2014/04/21 职场文书
异地年检委托书范本
2014/09/24 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
增值税发票丢失证明
2015/06/19 职场文书
高中军训感想
2015/08/07 职场文书
oracle索引总结
2021/09/25 Oracle