主机论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 157|回复: 6

这个是js的巨**UG?

[复制链接]

250

主题

417

回帖

1878

积分

金牌会员

Rank: 6Rank: 6

积分
1878
发表于 2025-1-6 09:57:18 | 显示全部楼层 |阅读模式
alert ('a' < 0 ? 'yes' : 'no')

alert ('a' == 0 ? 'yes' : 'no')

alert ('a' > 0 ? 'yes' : 'no')


上面三个全部提示 no

第2个不应该是yes吗
回复

使用道具 举报

114

主题

5111

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12136
发表于 2025-1-6 10:02:24 | 显示全部楼层
本帖最后由 职业菜鸟 于 2025-1-6 10:04 编辑

'a' = 0 类型都不一样 怎么能是yes 呢? ??????

alert (0== 0 ? 'yes' : 'no') 才是 yes
回复

使用道具 举报

250

主题

417

回帖

1878

积分

金牌会员

Rank: 6Rank: 6

积分
1878
 楼主| 发表于 2025-1-6 10:09:40 | 显示全部楼层
职业菜鸟 发表于 2025-1-6 10:02
'a' = 0 类型都不一样 怎么能是yes 呢? ??????

alert (0== 0 ? 'yes' : 'no') 才是 yes ...


js , patyon, php 等等... 这些都是若类型语言, 它们的规则就是与数字进行比较时会先把自己转成数字再比较,
字符a转数字在任何代码界都是等于数字0

alert ('a' == 0 ? 'yes' : 'no') 应该返回yes才对 (pathon和php都是返回yes的)

alert ('a' === 0 ? 'yes' : 'no')全等判断才应该返回 no
回复

使用道具 举报

114

主题

5111

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12136
发表于 2025-1-6 10:02:00 | 显示全部楼层
本帖最后由 职业菜鸟 于 2025-1-6 10:44 编辑
wawos 发表于 2025-1-6 10:09
js , patyon, php 等等... 这些都是若类型语言, 它们的规则就是与数字进行比较时会先把自己转成数字再比 ...


特地试了试python print 'a' == 0; False

只有PHP是True每个语言底层处理逻辑不同吧。 但是不应该返回 False 才是对的嘛?

另外 字符a转数字在任何代码界应该都会报错吧? 试了js和python ,js返回NaN python直接报错。
回复

使用道具 举报

5

主题

69

回帖

243

积分

中级会员

Rank: 3Rank: 3

积分
243
发表于 2025-1-6 10:36:31 | 显示全部楼层
职业菜鸟 发表于 2025-1-6 10:36
特地试了试python print 'a' == 0; False

只有PHP是True每个语言底层处理逻辑不同吧。 但是不应该返 ...

返回False确实是对的,但是在java里好像是可以比较的,不过得是char类型。用char a='a'
用a直接去和97比较是相等的。
回复

使用道具 举报

13

主题

527

回帖

1459

积分

金牌会员

Rank: 6Rank: 6

积分
1459
发表于 2025-1-6 10:09:00 | 显示全部楼层
怎么可能是0
回复

使用道具 举报

38

主题

180

回帖

712

积分

高级会员

Rank: 4

积分
712
发表于 2025-1-6 10:54:26 | 显示全部楼层
这么大的bug被你发现了,赶紧向w3c提报
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-5-15 06:28 , Processed in 0.075510 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表