为了账号安全,请及时绑定邮箱和手机立即绑定

为什么字符串“ 11”小于字符串“ 3”?

为什么字符串“ 11”小于字符串“ 3”?

翻阅古今 2019-11-02 10:39:51
if ('11' < '3') alert('true');显然,它不是根据长度来比较它们,而是通过编码来比较它们。但是,我不知道它是如何工作的。我需要一些解释:-)
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

字符串按字典顺序进行比较。即逐个字符,直到它们不相等或没有要比较的字符为止。“ 11”的首字符小于“ 3”的首字符。


> '11' < '3'

true

> '31' < '3'

false

> '31' < '32'

true

> '31' < '30'

false

如果我们使用字母,则因为b不小于a,abc不小于aaa,但是由于c小于d,abc小于abd。


> 'abc' < 'aaa'

false

> 'abc' < 'abd'

true

您可以将字符串显式转换为数字:


> +'11' < '3'

false


查看完整回答
反对 回复 2019-11-02
?
函数式编程

TA贡献1807条经验 获得超9个赞

默认情况下,JavaScript将根据每个字符的序号值比较两个字符串;很像strcmp()在C语言中的工作方式。


为了使您的比较工作有效,您可以将任一侧强制转换为数字,以告诉解释器您进行数字比较的意图:


Number('11') < '3' // false

+'11' < '3' // false, using + to coerce '11' to a numeric


'11' < Number('3') // false

'11' < +'3' // false


查看完整回答
反对 回复 2019-11-02
?
慕仙森

TA贡献1827条经验 获得超8个赞

按每个字符进行比较,结果如下false:


if ('41' < '3') alert('true');

由于4不小于3。因此,本质上,您的比较可以归结为:


if ('1' < '3') alert('true'); // true


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号