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

JS隐式转换_隐式转换是什么在什么条件下会触发隐式转换机制?在进行比较运算,或者进行四则运算时,常常会触发JS中的隐式转换机制。首先要记住JS设计者的初衷是美好的,他希望==是美好的操作选择,但是在美好的希望也是希望。小案例为什么[]==false?类型不同比较时,需要先做类型转换,==比较时有布尔值参与时,需要比较双方均转为数字,[]是非原值,需要转换为原值二者才能进行比较,大部分对象转换为…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

在进行比较运算,或者进行四则运算时,常常会触发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.net/183231.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 05_Spring Cloud Alibaba Dubbo

    05_Spring Cloud Alibaba Dubbo

    2021年7月11日
    66
  • 香港坚固金业的黑幕,属于非法投资平台。

    2015年4.29晚上凌晨两点半我结束了建仓操作,当时没又发现账户资金问题,后来第二天早晨发现账户被非法操作做单,所有资金信息都被在美国时间22:08开始到22:56仅仅不到一个小时时间,所有资金都频繁建仓平仓操作,导致我账户资金全部亏损。 第二天咨询客服客服回答说是我自己认为操作要么,账户信息被泄露,被他人非法操作了。他们查询说是操作IP地址是外地操作,我感觉到很可悲,

    2022年4月4日
    62
  • Pycharm使用pyinstaller打包成64/32位通用exe

    Pycharm使用pyinstaller打包成64/32位通用exe网上大多数博客都是行不通的 在此记录一个可行的快捷方式 下载 32 位 python 安装包 点击安装 选择第二种自定义方式安装 默认 填写自己的安装路径 安装完成 PycharmSetti 设置 ShowAll 点击 选择 existingenvi 选择 Python32 位安装路径 设置好后需要安装 pyinstaller 库 点击右边 号 安装 pyinstaller 完成 回到项目 对报红缺失的依

    2025年7月26日
    1
  • snmp trap日志「建议收藏」

    snmp trap日志「建议收藏」日志类型有三种,file,syslog和snmptrapsnmptrapd.conf文件内容及参数snmptrapd手册:http://www.net-snmp.org/docs/man/snmptrapd.conf.html,http://www.net-snmp.org/wiki/index.php/Snmptrapd中文翻译:《snmptrapd.conf文件内容及参数》,而且详细列出了参数《SnmpTrap的发送和接收演示》IBM开发者网站关于snmptrap引用最.

    2022年8月20日
    20
  • Brocade 光纤交换机级联配置「建议收藏」

    Brocade 光纤交换机级联配置「建议收藏」一、需求说明两台Brocade光纤交换机做级联二、检查级联许可:首先分别核查两台设备是都均具有级联License:1、通过licenseshow命令查看:三、更改DomainID修改switchdomainID,确保两台switch的domainID唯一1、运行switchshow命令确认当前的domainID:switch:admin>…

    2022年5月21日
    144
  • div css仿京东订单流程图样式代码

    效果展示 http://hovertree.com/texiao/css/25/本效果适合PC,也适合移动端手机扫描二维码查看效果:效果图:代码如下:转自:http://hovertre

    2021年12月26日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号