对存在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 检测浏览器和操作系统的脚本
Dec 26 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
Jun 21 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
IE6下拉框图层问题探讨及解决
Jan 03 Javascript
两种简单的跨域方法(jsonp、php)
Jan 02 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
JS处理一些简单计算题
Feb 24 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
Feb 18 Javascript
详解javascript对数组和json数组的操作
Apr 15 Javascript
Vue开发环境中修改端口号的实现方法
Aug 15 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 disk_free_space 返回目录可用空间
2010/05/10 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php中的比较运算符详解
2013/10/28 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
nginx 设置多个站跨域
2021/03/09 Servers
又一个小巧的图片预加载类
2007/05/05 Javascript
浅说js变量
2011/05/25 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
基于Python的接口测试框架实例
2016/11/04 Python
Win8下python3.5.1安装教程
2020/07/29 Python
pygame实现成语填空游戏
2019/10/29 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python 多进程原理及实现
2020/12/21 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
如何利用find命令查找文件
2016/11/18 面试题
报社实习生自荐信
2014/01/24 职场文书
汇源肾宝广告词
2014/03/20 职场文书
社区文化建设方案
2014/05/02 职场文书
颐和园导游词
2015/01/30 职场文书
婚庆答谢词大全
2015/09/29 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
关于python中模块和重载的问题
2021/11/02 Python
JavaScript实现优先级队列
2021/12/06 Javascript