对存在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 相关文章推荐
用JS实现的一个include函数
Jul 21 Javascript
多种方法判断Javascript对象是否存在
Sep 22 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
基于Vue.js实现简单搜索框
Mar 26 Javascript
vue2.0 keep-alive最佳实践
Jul 06 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
js分页之前端代码实现和请求处理
Aug 04 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
Dec 08 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
vue双向绑定数据限制长度的方法
Nov 04 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 字符串 小常识
2009/06/05 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
php析构函数的简单使用说明
2015/08/24 PHP
php常量详细解析
2015/10/27 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
php自定义分页类完整实例
2015/12/25 PHP
php语法检查的方法总结
2019/01/21 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
python从入门到精通(DAY 1)
2015/12/20 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
大学生军训自我鉴定
2014/02/12 职场文书
体育比赛口号
2014/06/09 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
品质保证书格式
2015/02/28 职场文书