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、将值转为字符串

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c++ sstream

    c++ sstreamsstream定义了三个类:istringstream、ostringstream和stringstream分别用来进行流的输入、输出和输入输出操作由于sstream使用string对象代替字符数组,避免缓冲区溢出的危险;其次,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。相比c库的数据类型转换,sstream更加安全、自动和直接。1.数据类型转换#inclu…

  • linux对外开放端口_如何通过命令开启端口

    linux对外开放端口_如何通过命令开启端口本文目录一、引言二、管理防火墙的命令2.1、开启防火墙2.1.1首先查看防火墙状态2.1.2开启防火墙2.1.3设置开机自启2.1.4重启防火墙2.1.5查看防火墙设置开机自启是否成功2.2、开启特定端口2.2.1添加端口2.2.2重新载入2.2.3查看2.2.4删除2.2.5关闭防火墙2.2.6查看开启的所有端口2.2.7查看服务的监听一、引言在Centos7.x中防火墙由firewalld来管理,以前为了方便,把防火墙都关闭了,因为现在项目

  • 升级qq群一直显示服务器失败怎么回事啊,QQ群创建失败是怎么回事,QQ群创建失败原因是什么…

    升级qq群一直显示服务器失败怎么回事啊,QQ群创建失败是怎么回事,QQ群创建失败原因是什么…原标题:QQ群创建失败是怎么回事,QQ群创建失败原因是什么有些时候我们创建QQ群的时候会出现创建失败的情况,狠人朋友都不知道造成这种情况发生的原因和处理的方法。接下来,晖哥就和大家分享下造成QQ群创建失败的原因到底是什么?提示1:敏感字眼/输入不符合规范如果QQ群名称或者群简介中含有敏感字的话,那么在创建QQ群的时候就会出现创建QQ失败的情况发生。建议大家可以修改之后,再进行创建QQ群。提示2:…

  • android 实现悬架控制

    android 实现悬架控制

  • selenium谷歌浏览器驱动配置「建议收藏」

    selenium谷歌浏览器驱动配置「建议收藏」selenium驱动配置

  • c语言中concat函数,SQL注入中用到的Concat函数详解-菜鸟白帽扫盲

    c语言中concat函数,SQL注入中用到的Concat函数详解-菜鸟白帽扫盲在我们WEB安全测试的时候,会经常使用到这一语法,因此应该透彻理解这一函数,今天好好实践了一下,整理如下。1.Concat函数:concat()是一个函数,用于用于将两个字符串连接起来,形成一个单一的字符串,类似于字符串拼接;语法:SELECTCONCAT(str1,str2,…)执行结果:​2.实战演示:查看users表下的数据SELECT*FROMusers那么当一条语句为SELE…

发表回复

您的电子邮箱地址不会被公开。

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