wawos 发表于 2025-1-6 09:57:18

这个是js的巨**UG?

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


上面三个全部提示 no

第2个不应该是yes吗

职业菜鸟 发表于 2025-1-6 10:02:24

本帖最后由 职业菜鸟 于 2025-1-6 10:04 编辑

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

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

wawos 发表于 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

职业菜鸟 发表于 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直接报错。

zagan 发表于 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比较是相等的。

将军 发表于 2025-1-6 10:09:00

怎么可能是0

midori 发表于 2025-1-6 10:54:26

这么大的bug被你发现了,赶紧向w3c提报
页: [1]
查看完整版本: 这个是js的巨**UG?