对存在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 相关文章推荐
JavaScript 常用函数库详解
Oct 21 Javascript
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
Jan 06 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
Aug 23 Javascript
几句话带你理解JS中的this、闭包、原型链
Sep 26 Javascript
关于JavaScript中事件绑定的方法总结
Oct 26 Javascript
Vue自定义指令介绍(2)
Dec 08 Javascript
webpack打包react项目的实现方法
Jun 21 Javascript
使用webpack将ES6转化ES5的实现方法
Oct 13 Javascript
在vue中嵌入外部网站的实现
Nov 13 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获取网页标题的3种实现方法代码实例
2014/04/11 PHP
linux使用crontab实现PHP执行计划定时任务
2014/05/10 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
Python修改Excel数据的实例代码
2013/11/01 Python
Python程序员开发中常犯的10个错误
2014/07/07 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
深入理解Django-Signals信号量
2019/02/19 Python
详解Python装饰器
2019/03/25 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
会计专业应届生求职信
2013/11/24 职场文书
中学生班主任评语
2014/01/30 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
励志演讲稿800字
2014/08/21 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
《绝招》教学反思
2016/02/20 职场文书