对存在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 相关文章推荐
Prototype使用指南之form.js
Jan 10 Javascript
jquery 图片上传按比例预览插件集合
May 28 Javascript
基于jQuery的360图片展示实现代码
Jun 14 Javascript
jquery scroll()区分横向纵向滚动条的方法
Apr 04 Javascript
js获取域名的方法
Jan 27 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
May 19 Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 Javascript
angular.extend方法的具体使用
Sep 14 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
javascript实现简单页面倒计时
Mar 02 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/08/04 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
用htc组件制作windows选项卡
2007/01/13 Javascript
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
javascript每日必学之继承
2016/02/23 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
Python中类型检查的详细介绍
2017/02/13 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
用Python写一个自动木马程序
2019/09/17 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
党员年终民主评议的自我评价
2013/11/05 职场文书
五年级作文之想象作文
2019/10/30 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
Nginx内网单机反向代理的实现
2021/11/07 Servers
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技