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实现存储hmtl字符串示例
Apr 25 Javascript
基于javascript实现的搜索时自动提示功能
Dec 26 Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 Javascript
jQuery实现本地预览上传图片功能
Jan 08 Javascript
第一章之初识Bootstrap
Apr 25 Javascript
AngularJs表单验证实例详解
May 30 Javascript
javascript的document中的动态添加标签实现方法
Oct 24 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
Mar 01 Javascript
angularjs自定义过滤器demo示例
Aug 24 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 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 object转数组示例
2014/01/15 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
python requests post多层字典的方法
2018/12/27 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
后进生转化工作制度
2014/01/17 职场文书
单位消防安全责任书
2014/07/23 职场文书
北京爱情故事观后感
2015/06/12 职场文书
篮球拉拉队口号
2015/12/25 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
Python+DeOldify实现老照片上色功能
2022/06/21 Python