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 动态添加按钮实现代码
May 06 Javascript
使用jQuery操作Cookies的实现代码
Oct 09 Javascript
jQuery自带的一些常用方法总结
Sep 03 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
Oct 25 Javascript
node.js实现回调的方法示例
Mar 01 Javascript
javascript实现电脑和手机版样式切换
Nov 10 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
使用AutoJs实现微信抢红包的代码
Dec 31 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
隐藏你的.php文件的实现方法
2007/03/19 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
暑假社会实践心得体会
2014/09/02 职场文书
2015年新农合工作总结
2015/03/30 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书