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 相关文章推荐
jQuery 使用个人心得
Feb 26 Javascript
javascript实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
JavaScript的21条基本知识点
Mar 04 Javascript
Javascript验证上传图片大小[前台处理]
Jul 18 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
Aug 24 Javascript
Taro集成Redux快速上手的方法示例
Jun 21 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
js逆向解密之网络爬虫
May 30 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
浅析PHP水印技术
2007/02/14 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
园林毕业生自我鉴定范文
2013/12/29 职场文书
《雨点》教学反思
2014/02/12 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
企业务虚会发言材料
2014/10/20 职场文书
先进个人事迹材料
2014/12/29 职场文书
个人委托函范文
2015/01/29 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android