对存在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 相关文章推荐
关于IFRAME 自适应高度的研究
Jul 20 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
基于JQuery的多标签实现代码
Sep 19 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
Mar 06 Javascript
JS实现距离上次刷新已过多少秒示例
May 23 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
基于JS代码实现实时显示系统时间
Jun 16 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
JS运动特效之完美运动框架实例分析
Jan 24 Javascript
基于vue和react的spa进行按需加载的实现方法
Sep 29 Javascript
JS字符串与二进制的相互转化实例代码详解
Jun 28 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
Python 文件操作的详解及实例
2017/09/18 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
python实现猜数游戏
2020/03/27 Python
Python matplotlib实时画图案例
2020/04/23 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
英国电气世界:Electrical World
2019/09/08 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
Unix如何在一行中运行多个命令
2015/05/29 面试题
老师自我鉴定范文
2013/12/25 职场文书
入党自荐书范文
2014/03/09 职场文书
《画》教学反思
2014/04/14 职场文书
旅游文化节策划方案
2014/06/06 职场文书
银行业务授权委托书
2014/10/10 职场文书
工作经历证明书范文
2014/11/02 职场文书
检讨书怎么写?
2019/06/21 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫
对讲机知识
2022/04/07 无线电