为什么字符串“11”比字符串“3”小
Why is string "11" less than string "3"?
if ('11' < '3') alert('true');
很明显,它不是通过长度比较它们,而是通过编码来比较它们。但是,我不明白它是如何工作的。我需要一些解释:-)
字符串按字典顺序进行比较。 即逐个字符,直到它们不相等或没有任何字符可以比较。"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
'1' < '3'
,因为第一个字符是"最重要的字符"(并不是说这个术语有任何意义)。以下任何字符将不再比较。
它被视为字符串比较。所以 1 <3(两个字符串的第一个字符)然后字符串 11 在字符串 3 之前
相关文章:
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 为什么脚本标记被分解为两个字符串
- 为什么错误不能字符串化
- 为什么“{}+1”在Chrome和Firefox中排名第一,而字符串'[object object]1'
- 为什么不是't my元素:使用变量而不是字符串时包含(变量)功?jquery
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- 为什么我不能使用jQuery.parseJSON(json)解析json字符串
- 为什么不'将字符串转换为int不正确(parseInt)
- 为什么我得到“;错误:预期"同时访问字符串
- 为什么Javascript中的整数加空格加字符串会导致数字和字符串的总和?(2++'22'=24)
- 为什么 +str 在 JS 中比 str*1 更好地将字符串转换为数字
- 为什么字符串在 ES2015 中是可迭代对象
- 为什么我不必在 JS 中解码/解析 PHP 生成的 JSON 字符串
- 为什么 Javascript 在变量赋值时将 null 转换为字符串
- 为什么我的 React getDOMNode().textContent JavaScript 字符串不等于字符串
- 为什么我在 webpack 中需要 html 文件时会得到一个位置字符串
- 查找映射值,其中键是数组中的字符串.为什么会这样
- 使用数组处理 JavaScript 字符串 为什么它在控制台上打印“R”而不是“Z”
- JQuery.each将字符串文字转换为字符串.为什么?
- 谷歌应用脚本正在改变我的数组成字符串.为什么