JS之隐式转换与布尔判定

大家思考一下
[ ] + [ ]= ?
答案是空字符串
为什么呢?
当做加法运算的时候,发现左右两端存在非原始类型,也就是引用类型对象,就会对对象做隐式类型转换
如何执行的?或者说怎么查找的?
第一步,会去对象中查找是否有 [Symbol.toPrimitive]

    let obj = {
        [Symbol.toPrimitive]() {
            return 123 //如果返回引用数据类型 下面打印会报错
        }
    }
    console.log(obj + 1); //124

如果不存在就进入第二步,查找是否存在valueOf

    let obj = {
        valueOf() {
            return 1 
        }
    }
    console.log(obj + 1); //2

如果valueOf返回的也是引用数据类型就会进入第三步,toString()

    let obj = {
        valueOf() {
            return [] //如果返回引用数据类型就会进入第三步
        },
        toString() {
            return 1
        }
    }
    console.log(obj + 1); //2

所有为什么[ ] + [ ] = " " 呢?
因为它依次查找,找到最后发现是 [ ] 就会执行最后一步 [ ].toString()也就是空字符串

那[ ] + ![ ] = ?
答案是false

这个是布尔判定 不是类型转换
大家熟知的布尔为false的有:NaN Undefined Null “ ” 0 false
除了这些东西 其它都为true ![ ] 为false
空字符串 + false = false

    console.log([] + ![]);//false

在这里插入图片描述
感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/353795.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国新能源汽车持续跑出发展“加速度”,比亚迪迎来向上突破

2023年已经过去,对于汽车圈而言,2023年是中国车市的分水岭,在这一年,中国汽车工业70年以来首次进入全球序列,自主品牌强势霸榜,销量首次超过合资车。要知道,这是自大众于1984年进入中国市场成立…

Android App开发-简单控件(3)——常用布局

3.3 常用布局 本节介绍常见的几种布局用法,包括在某个方向上顺序排列的线性布局,参照其他视图的位置相对排列的相对布局,像表格那样分行分列显示的网格布局,CommonLayouts以及支持通过滑动操作拉出更多内容的滚动视图。 3.3.1 线…

Jenkins上跑自动化项目,case出现错误时,导致项目运行时间过长,该如何处理?

1、方案一:Jenkins上调整 进入配置: 构建环境: 自行选择超时时间即可~ 2、方案二:代码调整【python】 安装插件:pytest-timeout 选择一:装饰器用法:将单个测试用例标记为超时&…

Qt6入门教程 12:QAbstractButton

目录 一.状态 二.信号 三.使用 1.自定义按钮 2.多选 3.互斥 QAbstractButton类实现了一个抽象按钮,并且让它的子类来指定如何处理用户的动作,并指定如何绘制按钮。QAbstractButton类是所有按钮控件的基类。 QAbstractButton提供…

【Docker】数据持久化 挂载

Docker的镜像是只读的,但是容器是可写的,我们可以将数据写入到容器,不过一旦容器删除数据将会丢 失,那么有什么办法能将数据进行持久化存储呢? ——在宿主机上开辟一块地方,存储内容和docker容器的存储内…

TCP 三次握手 四次挥手以及滑动窗口

TCP 三次握手 简介: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的 “ 连接” ,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。 TCP 可以…

HCIP复习课(bgp选路实验)

1.如图连接网络,合理规格IP地址,AS200内IGP协议为OSPF 2.R1属于AS 100:R2-R3-R4小AS 234 R5-R6-R7/AS567,同时声明大AS 200,R8属于AS300 3.R2-R5 R4-R7之间为联邦EBGP邻居关系 4.R1-R8之间通信 1、ip配置: R1: R2:…

js中 == 和 === 区别(分别在什么情况使用)

文章目录 一、等于操作符二、全等操作符三、区别小结 一、等于操作符 等于操作符用两个等于号( )表示,如果操作数相等,则会返回 true 前面文章,我们提到在JavaScript中存在隐式转换。等于操作符(&#x…

嵌入式——实时时钟(RTC)

目录 一、初识RTC 1.简介 2.特性 3.后备寄存器和RTC寄存器特性 二、RTC组成 1.相关寄存器 (1)控制寄存器高位(RTC_CRH) (2)控制寄存器低位(RTC_CRL) (3&#xf…

常用DOS命令讲解

DOS命令是DOS操作的基础,下面就来介绍一些常用的DOS命令。 DOS内部命令 1、DIR 含义:显示指定路径上所有文件或目录的信息 格式:DIR [盘符:][路径][文件名] [参数] 参数: /W:宽屏显示,一排显示…

Kotlin MultiPlatform:构建跨平台应用的未来

Kotlin MultiPlatform:构建跨平台应用的未来 1 引言 1.1 Kotlin MultiPlatform简介 Kotlin MultiPlatform(简称KMP)是一种由JetBrains开发的跨平台开发解决方案,它建立在Kotlin语言之上。KMP允许开发者使用一套Kotlin代码来构建…

ELK日志解决方案

ELK日志解决方案 ELK套件日志系统应该是Elasticsearch使用最广泛的场景之一了,Elasticsearch支持海量数据的存储和查询,特别适合日志搜索场景。广泛使用的ELK套件(Elasticsearch、Logstash、Kibana)是日志系统最经典的案例,使用Logstash和Be…

力扣hot100 最小栈 变种栈

Problem: 155. 最小栈 文章目录 思路💖 Stack 自定义 Node🍻 Code 思路 👩‍🏫 甜姨 💖 Stack 自定义 Node 时间复杂度: O ( 1 ) O(1) O(1) 空间复杂度: O ( n ) O(n) O(n) 🍻 Code class MinS…

基于Matlab/Simulink直驱式风电储能制氢仿真模型

接着还是以直驱式风电为DG中的研究对象,上篇博客考虑的风电并网惯性的问题,这边博客主要讨论功率消纳的问题。 考虑到风速是随机变化的,导致风电输出功率的波动性和间歇性问题突出;随着其应用规模的不断扩大以及风电在电网中渗透率…

【无标题】Gateway API 实践之(五)FSM Gateway 的会话保持功能

网关的会话保持功能是一种网络技术,旨在确保用户的连续请求在一段时间内被定向到同一台后端服务器。这种功能在需要保持用户状态或进行连续交互的场景中特别重要,例如在维护在线购物车、保持用户登录状态或处理多步骤事务时。 会话保持通过提供一致的用…

数据结构总结

数据结构总结 数据结构系列的文章从基本数据类型到数据结构,涵盖整型、布尔值、字符串、列表、元组、字典、集合、堆、栈、链表、树和图,以及队列和环等相关内容。 这里再补充一点:树和图都有更高阶的“玩法”,那就是加权——为每…

(Java企业 / 公司项目)微服务Sentinel限流如何使用?

1. Sentinel限流降级: 一个接口一个方法流量大限制流量,有些接口流量通过了有的没有通过所以就出现了降级操作 2. Sentinel熔断降级:A调用B B自身原因响应不稳定等,A觉得不稳定所以就断开就像保险丝一样 3. Sentinel nacos组合&…

Python魔法函数和迭代器

文章目录 引入魔法函数 和for循环原理iter和next函数 刷完这60个标准库模块,成为Python骨灰级玩家 引入 每个Pythoner对for...in这种循环都很熟悉,其使用方法如下 for i in [1,2,3,4,5]:print(i)输出如下 1 2 3 4 5 1\\2\\3\\4\\5 12345 上述代码非常…

未发表!基于主从博弈的多主体微网/综合能源系统利益分摊与能量管理程序代码!

适用平台:MatlabYalmipCplex 程序首先建立了综合能源运营商、新能源用户、电动汽车充电商的多主体园区,分析了三种市场交易主体的属性和市场交易机制。其次建立基于主从博弈的三方市场主体能量管理与收益分摊方案,利用改进粒子群算法进行求解…

【GitHub项目推荐--十六进制编辑器】【转载】

一款名为 ImHex 的十六进制编辑器获得了 15.3k 的 Star。十六进制编辑器可以让你以十六进制的形式查看或编辑文件的二进制数据,并用较为友好的界面来编辑二进制数据,和常见的十六进制编辑器 GNOME Hex Editor 等不一样,ImHex 功能非常强大&am…
最新文章