对存在JavaScript隐式类型转换的四种情况的总结(必看篇)


Posted in Javascript onAugust 31, 2017

一般存在四种情况,JavaScript会对变量的数据类型进行转换。

目录

* if中的条件会被自动转为Boolean类型
 * 会被转为false的数据
 * 会被转为true的数据
* 参与+运算都会被隐式的转为字符串
 * 会被转为空字符串的数据
 * 会被转为字符串的数据
 * 会被转为数据类型标记的数据
* 参与*运算都会被隐式的转为数字
 * 会被转为0的数据
 * 会被转为1的数据
 * 会被转为NaN的数据
* == 运算符
 * 为true的时候
 * 为false的时候

if中的条件会被自动转为Boolean类型

会被转为false的数据

if(false) console.log(2333)
if('') console.log(2333)
if(null) console.log(2333)
if(undefined) console.log(2333)
if(NaN) console.log(2333)

会被转为true的数据

if(true) console.log(2333) // 2333
if('test') console.log(2333) // 2333
if([]) console.log(2333) // 2333
if({}) console.log(2333) // 2333

参与+运算都会被隐式的转为字符串

会被转为空字符串的数据

'str-' + '' // str-
'str-' + []

会被转为字符串的数据

'str-' + '1' // "str-1"
'str-' + 1 // "str-1"
'str-' + false // "str-false"
'str-' + true // "str-true"
'str-' + null // "str-null"
'str-' + undefined // "str-undefined"
'str-' + NaN // "str-NaN"

会被转为数据类型标记的数据

'str-' + {} // "str-[object Object]"
'str-' + {a:1} // "str-[object Object]"

参与*运算都会被隐式的转为数字

会被转为0的数据

2 * '' // 0
2 * [] // 0
2 * false // 0

会被转为1的数据

2 * '1' // 2
2 * [1] // 2
2 * true // 2

会被转为NaN的数据

2 * {} // NaN
2 * {a:1} // NaN

== 运算符

为true的时候

0 == false // true
0 == '' // true
0 == '0' // true
0 == [] // true
0 == [0] // true

1 == true // true
1 == '1' // true
1 == [1] // true

[1] == true // true
[] == false // true

为false的时候

0 == {} // false
0 == null // false
0 == undefined // false
0 == NaN // false

1 == {} // false
1 == null // false
1 == undefined // false
1 == NaN // false

[] == [] // false
[1] == [1] // false
[1] == {} // false
[1] == {a:1} // false
[1] == false // false
[1] == null // false
[1] == undefined // false
[1] == NaN // false

{} == {} // false
{a:1} == {a:1} // false

注:空数组[],在+运算符下是转为空字符串'',在*运算符下是转为数字0。但在if语句中,则转为true。

以上这篇对存在JavaScript隐式类型转换的四种情况的总结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现图片随机排列的方法
May 04 Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 Javascript
javascript表单正则应用
Feb 04 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
jQuery响应滚动条事件功能示例
Oct 14 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
微信小程序实现多选功能
Nov 04 Javascript
express express-session的使用小结
Dec 12 Javascript
JavaScript中的 new 命令
May 22 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
js属性对象的hasOwnProperty方法的使用
Feb 05 Javascript
如何封装Vue Element的table表格组件
Feb 06 Vue.js
[js高手之路]HTML标签解释成DOM节点的实现方法
Aug 31 #Javascript
基于JSON数据格式详解
Aug 31 #Javascript
浅谈js中的this问题
Aug 31 #Javascript
js实现图片放大展示效果
Aug 30 #Javascript
详解js几个绕不开的事件兼容写法
Aug 30 #Javascript
JavaScript实现滑动导航栏效果
Aug 30 #Javascript
详解vue-cli 构建Vue项目遇到的坑
Aug 30 #Javascript
You might like
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
destoon常用的安全设置概述
2014/06/21 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
PHP调用其他文件中的类
2018/04/02 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
用Python写一个无界面的2048小游戏
2016/05/24 Python
基于python的字节编译详解
2017/09/20 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
实习生自荐信范文
2013/11/13 职场文书
军训自我鉴定100字
2014/02/13 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
交通文明倡议书
2014/05/16 职场文书
优秀教师个人材料
2014/12/15 职场文书
工程部经理岗位职责
2015/02/02 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python