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 相关文章推荐
JS动画效果代码3
Apr 03 Javascript
return false;和e.preventDefault();的区别
Jul 11 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
Jan 27 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
js实现四舍五入完全保留两位小数的方法
Aug 02 Javascript
JQuery遍历元素的后代和同胞实现方法
Sep 18 Javascript
jquery dataTable 获取某行数据
May 05 jQuery
在vue-cli中组件通信的方法
Dec 16 Javascript
页面点击小红心js实现代码
May 26 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 Javascript
vscode下vue项目中eslint的使用方法
Jan 13 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中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
Prototype Selector对象学习
2009/07/23 Javascript
js+css在交互上的应用
2010/07/18 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
详解python实现线程安全的单例模式
2018/03/05 Python
python实现自动登录
2018/09/17 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
使用python实现名片管理系统
2020/06/18 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
小加工厂管理制度
2014/01/21 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
党支部半年考察意见
2015/06/01 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python