前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS隐式转换_隐式转换是什么

JS隐式转换_隐式转换是什么

作者头像
全栈程序员站长
发布2022-11-10 15:51:24
1.9K0
发布2022-11-10 15:51:24
举报
文章被收录于专栏:全栈程序员必看

在什么条件下会触发隐式转换机制?

在进行比较运算,或者进行四则运算时,常常会触发JS中的隐式转换机制。

首先要记住JS设计者的初衷是美好的,他希望 == 是美好的操作选择,但是在美好的希望也是希望。

小案例

  1. 为什么 [] == false ? 类型不同比较时,需要先做类型转换,==比较时有布尔值参与时,需要比较双方均转为数字,[ ]是非原值,需要转换为原值二者才能进行比较,大部分对象转换为原值最后都是调用的toString方法,[] –> toString() —> ‘’,当字符串和数字比较时,会把字符串转换为数字,而空字符串转换为数字结果是0,而 0 == 0,所以结果为true
  2. 为什么NaN !== NaN? 这是隐式转换的一个很大的弊端,es6的includes方法可以检测出NaN等于NaN,这是一大进步
  3. null == 0 结果为false 这时候两边的类型也不同,但是却没有做类型转换,why?因为这时候二者都已经是基本数据类型了,没有办法在进行转换了,所以二者的类型都不可能相同,结果自然为false
  4. 为什么null == undefined 结果为true 这是一种规定 if x is null and y is undefined, return true if y is null and x is undefined, return true
  5. 为什么 !![] = true 这里并没有涉及 == 比较,只需要判断 [] 是true还是false即可
注意,字符串转换为数字调用的是Number方法,NaN也是数字,某些方面来说布尔类型也属于一种int类型

隐式转换的最大弊端

NaN不等于NaN

几种为false的情况,只要不是这几组值,结果均为true

0,’’,NaN,false,null,undefined

涉及隐式转换最多的两个运算符

+ ,==

三种隐式转换

1、将值转为原始值 2、将值转为数字 3、将值转为字符串

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183231.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在什么条件下会触发隐式转换机制?
  • 首先要记住JS设计者的初衷是美好的,他希望 == 是美好的操作选择,但是在美好的希望也是希望。
  • 小案例
    • 注意,字符串转换为数字调用的是Number方法,NaN也是数字,某些方面来说布尔类型也属于一种int类型
    • 隐式转换的最大弊端
    • 几种为false的情况,只要不是这几组值,结果均为true
    • 涉及隐式转换最多的两个运算符
    • 三种隐式转换
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档