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 新手24条实用建议[TUTS+]
Jun 21 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
Dec 28 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
Mar 04 Javascript
js实现索引图片切换效果
Nov 21 Javascript
原生Javascript和jQuery做轮播图简单例子
Oct 11 Javascript
js仿微信抢红包功能
Sep 25 Javascript
javascript获取图片的top N主色值方法详解
Jan 26 Javascript
小程序登录/注册页面设计的实现代码
May 24 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
vscode vue 文件模板的配置方法
Jul 23 Javascript
微信小程序实现日历小功能
Nov 18 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
基于文本的留言簿
2006/10/09 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
javascript 获取网页参数系统
2008/07/19 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
2017/07/11 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
python SOCKET编程基础入门
2021/02/27 Python
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
学习实践科学发展观心得体会
2014/09/10 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
小学优秀学生评语
2014/12/29 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android