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(live)中File input的change方法只起一次作用的解决办法
Oct 21 Javascript
根据json字符串生成Html的一种方式
Jan 09 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
Jun 05 Javascript
批量下载对路网图片并生成html的实现方法
Jun 07 Javascript
jQuery如何获取动态添加的元素
Jun 24 Javascript
RequireJS多页面应用实例分析
Jun 29 Javascript
浅谈js中几种实用的跨域方法原理详解
Dec 02 Javascript
Angular工具方法学习
Dec 26 Javascript
详解JS对象封装的常用方式
Dec 30 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
Aug 28 Javascript
JS继承实现方法及优缺点详解
Sep 02 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日历程序
2006/12/06 PHP
php仿ZOL分页类代码
2008/10/02 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
详解Python中的静态方法与类成员方法
2017/02/28 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python之array赋值技巧分享
2019/11/28 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
往来会计岗位职责
2013/12/19 职场文书
晚会邀请函范文
2014/01/24 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
幼师求职自荐信
2014/05/31 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
房产公证书样本
2015/01/23 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
法制主题班会教案
2015/08/13 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL