资讯专栏INFORMATION COLUMN

对存在JavaScript隐式类型转换的四种情况的总结

UnixAgain / 1097人阅读

摘要:一般存在四种情况,会对变量的数据类型进行转换。但在语句中,则转为。

一般存在四种情况,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。

欢迎关注前端进阶指南微信公众号:

另外我也创了一个对应的QQ群:660112451,欢迎一起交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85088.html

相关文章

  • 你不知道js中关于this绑定机制解析[看完还不懂算我输]

    摘要:绑定书中提到在中,实际上并不存在所谓的构造函数,只有对于函数的构造调用。规则使用构造调用的时候,会自动绑定在期间创建的对象上。指向新创建的对象绑定比隐式绑定优先级高。 showImg(http://ww1.sinaimg.cn/large/005Y4rCogy1fstcwvzkjzj30sg0g0qqn.jpg); 前言 最近正在看《你不知道的JavaScript》,里面关于this绑...

    dunizb 评论0 收藏0
  • 通俗方式理解动态类型,静态类型;强类型,弱类型

    摘要:不允许隐式转换的是强类型,允许隐式转换的是弱类型。拿一段代码举例在使用调用函数的时候会先生成一个类模板运行时生成,执行的时候会生成类模板,执行的时候会生成类模板。 0 x 01 引言 今天和一个朋友讨论 C++ 是强类型还是弱类型的时候,他告诉我 C++ 是强类型的,他和我说因为 C++ 在写的时候需要 int,float 等等关键字去定义变量,因此 C++ 是强类型的,我告诉他 C+...

    周国辉 评论0 收藏0
  • JS程序

    摘要:设计模式是以面向对象编程为基础的,的面向对象编程和传统的的面向对象编程有些差别,这让我一开始接触的时候感到十分痛苦,但是这只能靠自己慢慢积累慢慢思考。想继续了解设计模式必须要先搞懂面向对象编程,否则只会让你自己更痛苦。 JavaScript 中的构造函数 学习总结。知识只有分享才有存在的意义。 是时候替换你的 for 循环大法了~ 《小分享》JavaScript中数组的那些迭代方法~ ...

    melody_lql 评论0 收藏0
  • JavaScript中this绑定详解

    摘要:绑定最后要讲的一种绑定规则,是指通过操作符调用构造函数时发生的绑定。因此,所谓的绑定是指通过操作符来调用函数时,会产生一个新对象,并且会把构造函数内的绑定到这个对象上。事实上,在中,使用来调用函数,会自动执行下面的操作。 转载请注明出处 https://segmentfault.com/a/11... this 可以说是 javascript 中最耐人寻味的一个特性,就像高中英语里各种...

    yacheng 评论0 收藏0
  • YouDontKnowJS 小黄书学习小结

    摘要:真正的理解闭包的原理与使用更加透彻绑定的四种规则机制你不知道的人称小黄书,第一次看到这本书名就想到了一句话你懂得,翻阅后感觉到很惊艳,分析的很透彻,学习起来也很快,块级作用域语句语句相当于比较麻烦而且用在对象上创建的块作用域仅仅在声明中有效 真正的理解闭包的原理与使用 更加透彻this绑定的四种规则机制 你不知道的JavaScript 人称小黄书,第一次看到这本书名 就想到了一句话...

    Yuqi 评论0 收藏0

发表评论

0条评论

UnixAgain

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<