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

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

显然,它不是根据长度来比较它们,而是通过编码来比较它们。但是,我不知道它是如何工作的。我需要一些解释:-)


翻阅古今
浏览 600回答 3
3回答

梵蒂冈之花

字符串按字典顺序进行比较。即逐个字符,直到它们不相等或没有要比较的字符为止。“ 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

函数式编程

默认情况下,JavaScript将根据每个字符的序号值比较两个字符串;很像strcmp()在C语言中的工作方式。为了使您的比较工作有效,您可以将任一侧强制转换为数字,以告诉解释器您进行数字比较的意图:Number('11') < '3' // false+'11' < '3' // false, using + to coerce '11' to a numeric'11' < Number('3') // false'11' < +'3' // false

慕仙森

按每个字符进行比较,结果如下false:if ('41' < '3') alert('true');由于4不小于3。因此,本质上,您的比较可以归结为:if ('1' < '3') alert('true'); // true
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript