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 相关文章推荐
关于IE7 IE8弹出窗口顶上
Dec 22 Javascript
JavaScript入门教程(3) js面向对象
Jan 31 Javascript
JavaScript将数据转换成整数的方法
Jan 04 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
IE6 hack for js 集锦
Sep 23 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
JavaScript实现两个select下拉框选项左移右移
Mar 09 Javascript
详解JavaScript调用栈、尾递归和手动优化
Jun 03 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
Mar 01 Javascript
Angular学习教程之RouterLink花式跳转
May 03 Javascript
js合并两个数组生成合并后的key:value数组
May 09 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
php存储过程调用实例代码
2013/02/03 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
javascript实现密码验证
2015/11/10 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
python利用beautifulSoup实现爬虫
2014/09/29 Python
python发送HTTP请求的方法小结
2015/07/08 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
大学四年学习的自我评价分享
2013/12/09 职场文书
远程研修随笔感言
2014/02/10 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js