栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么('0'?'a':'b')的行为不同于('0'== true?'a':'b'

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么('0'?'a':'b')的行为不同于('0'== true?'a':'b'

首先,为了完整性:

('0' ? 'a' : 'b')

'a'
的,因为
'0'
是一个非空字符串,这始终计算结果为
true

字符串:如果参数为空字符串(其长度为零),则结果为 false; 否则为 false 。否则结果为 true


现在到

'0' == true

这里将进行两次类型转换。我们可以在规范的第11.9.3节“抽象平等比较算法”中遵循这一要求。

操作数表示为

x
y
x == y
)。

在我们的例子中,

x
是一个字符串(
'0'
)和
y
一个布尔值(
true
)。因此,执行步骤7:

如果Type(y)为Boolean,则返回比较结果x == ToNumber(y)。

将布尔值转换为数字时,将进行以下转换:

布尔值:如果参数为 true, 则结果为 1 。如果参数为 false, 则结果为 +0

现在我们有

'0' == 1

符合步骤5中的条件:

如果Type(x)为String,Type(y)为Number,则返回比较结果ToNumber(x)== y。

如何将字符串转换为数字更为复杂,但是当然也可以在规范中找到。

所以最后的比较是

0 == 1

这是

false
(步骤1. a。vi。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号