对存在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 18 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
JS+CSS实现闪烁字体效果代码
Apr 05 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
Jul 12 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
Apr 12 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
vue-cli开发环境实现跨域请求的方法
Apr 07 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
Jun 18 Javascript
ant design实现圈选功能
Dec 17 Javascript
vue 封装 Adminlte3组件的实现
Mar 18 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php 图像函数大举例(非原创)
2009/06/20 PHP
解析php取整的几种方式
2013/06/25 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python实现门限回归方式
2020/02/29 Python
pymysql模块使用简介与示例
2020/11/17 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
出纳岗位职责模板
2013/11/27 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
婚前协议书范本
2014/04/15 职场文书
实习公司领导推荐函
2014/05/21 职场文书
经营管理策划方案
2014/05/22 职场文书
助学金感谢信
2015/01/20 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
法人代表证明书范本
2015/06/18 职场文书
mysql sock 文件解析及作用讲解
2022/07/15 MySQL