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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么复制一台虚拟机到另外一台电脑上

    怎么复制一台虚拟机到另外一台电脑上怎么复制一台虚拟机到另外一台电脑上

    2022年4月23日
    80
  • mysql之视图、索引

    mysql之视图、索引视图 什么是视图 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。 视图的作用 定制用户数据,聚焦

    2022年7月22日
    12
  • 细说java_java barrier

    细说java_java barrier今天来说说cloneable,java中创建对象除了使用new关键字,反射,还有一种方式就是clone。有一个设计模式叫原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,简单的说就是clone一个对象实例,使得clone出来的对象和原有的对象一模一样,两个对象相互不影响。什么时候使用clone呢,clone又存在哪些问题?  1.clone的使用场景…

    2022年10月14日
    3
  • 春运里的“车轮战”:每天60多道工序保养轮对

    春运里的“车轮战”:每天60多道工序保养轮对

    2021年6月29日
    111
  • JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置[通俗易懂]

    JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置[通俗易懂]XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。-Xms堆内存的最小大小,默认为物理内存的1/64-Xmx堆内存的最大大小,默认为物理内存的1/4-Xmn堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn-Xss设置每个线程可使用的内存大小,即…

    2022年6月4日
    43
  • 用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler

    用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler平时我们在用多线程开发的时候少不了Task,确实task给我们带来了巨大的编程效率,在Task底层有一个TaskScheduler,它决定了task该如何被调度,而在.netframework中有

    2022年7月3日
    26

发表回复

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

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