对存在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 相关文章推荐
关于B/S判断浏览器断开的问题讨论
Oct 29 Javascript
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
js window对象属性和方法相关资料整理
Nov 11 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 Javascript
Vue 换肤的示例实践
Jan 23 Javascript
JavaScript常见事件处理程序实例总结
Jan 05 Javascript
刷新页面后让控制台的js代码继续执行
Sep 20 Javascript
Vue的状态管理vuex使用方法详解
Feb 05 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
[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广告加载类用法实例
2014/09/23 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
jquery实现控制表格行高亮实例
2013/06/05 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
给Python入门者的一些编程建议
2015/06/15 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
python实现图像拼接功能
2020/03/23 Python
python selenium xpath定位操作
2020/09/01 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
本科生的职业生涯规划范文
2014/01/09 职场文书
职位说明书范文
2014/05/07 职场文书
水电站项目建议书
2014/05/12 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
百年校庆感言
2015/08/01 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
Python 实现Mac 屏幕截图详解
2021/10/05 Python