美文网首页
日常开发中关于类型转换的思考

日常开发中关于类型转换的思考

作者: 易冷zzz | 来源:发表于2020-06-14 23:18 被阅读0次

问题背景:

//问题1
console.log([] == false) //true
//问题2
[] ? console.log('111') : console.log('2') //‘111’                      

以上两行代码在日常开发中非常常见,以此为例那么[]到底是false还是true呢?
简单来说:

[] == fasle  //true
//==为比较运算符,两边都需要转换为Number类型  [] => 0 false => 0
[] ? console.log('111') : console.log('2') //‘111’
//此处[]作为判断条件转换为布尔值为false

总结:[]转换为Number0; 转换为布尔值为true;转换为字符串为""

关于==的比较参考如下规则:
如果两个值的类型相同进行 ===比较
如果两个值得类型不同,先根据下面的规则进行类型转换后再比较:
1.如果一个是null另一个是undefined,那么相等
2.如果一个是数值一个是字符串,则字符串转换为数值再比较
3.如果其中一个为true则转化为1false则转化为0进行比较
4.如果一个是对象另一个是数值或者字符串,把对象转为基础类型的值再比较。对象转基础类型利用toString或者valueOf方法,js核心内置类会尝试valueOf优先于toString,但是Date对象利用toString转换。
5.不属于以上几种情况的其他组合都不相等。

具体可参考MDN JavaScript 中的相等性判断

关于if条件转化为布尔值的规则:

如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true

相关文章

  • 日常开发中关于类型转换的思考

    问题背景: 以上两行代码在日常开发中非常常见,以此为例那么[]到底是false还是true呢?简单来说: 总结:[...

  • 捯饬一下Java类型转换

    日常开发过程中,我们经常会遇到基本数据类型的转换,今天就来稍微总结一下Java的类型转换。 1.自动类型转换(隐式...

  • Java的时间转换(一)—— Date

    在我们的日常开发中,相信数据类型的转换曾花费大家不少的时间与精力。那么,这次我们就来探讨和总结,Java的时间类型...

  • Struts2类型转换技术

    1. Struts2 类型转换使用介绍 Struts2的类型转换几乎支持Java中各种数据类型的转换。甚至开发者还...

  • iOS 时间戳、时间转换

    参考文档1:iOS时间类型转换和各种数据类型进行转换 参考文档2:iOS开发中的时间与日期(上) 转换工具:时间戳...

  • GeekBand C++ WEEK3

    一 . 关于类型转换 1. conversion function (转换函数) —— “转出去” 类型转换函数的...

  • 04ES5--常用语法

    数据类型的转换 类型转换在开发中是非常常见的一种操作,特别是对于js这种动态类型预言,变量没有类型限制,编译时是无...

  • 关于Object[] 强制类型转换的思考

    前言 今天群里有位同学提了一个关于Object[]数组向下强制类型转换的问题,个人觉得这个问题还是有必要思考总结一...

  • C++类型转换

    实际开发中C++类型转换需要注意一些使用情况,保证类型安全。

  • Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。 其中,基本...

网友评论

      本文标题:日常开发中关于类型转换的思考

      本文链接:https://www.haomeiwen.com/subject/qonfxktx.html