为什么 'a' > 'A' 是真的?
Why is 'a' > 'A' true?
我正在上一门关于运算符的课程,在练习中出现了这个例子,说明 'a' > 'A' === true。它没有解释为什么它是真的。我尝试自己研究了一下,认为这可能与词典顺序有关,但这似乎不对。我还检查了它是否与 ASCII 和 Unicode 字母表上的位置有关,但似乎也不是这种情况。有人可以解释为什么 JavaScript 中的小写 'a' 大于大写 'A' 吗?
因为 a
在 ASCII 和低端 UTF8 中大于 A
console.log("a > A is","a">"A","because a is","a".charCodeAt(0),"and A is","A".charCodeAt(0))
相关:Is there any logic behind ASCII codes' ordering?
这是因为 a
的 ASCII
值大于 A
:
console.log('a'.charCodeAt(0)) // 97
console.log('A'.charCodeAt(0)) // 65
console.log(97 > 65) // true
您可以在下面的 ascii table 中看到每个字符的值
一=97
A = 65
所以 'a' 大于 'A'
大多数语言都能有效地完成同样的事情:
例如 PowerShell
[char]'a' -gt [char]'A'
我们可以将字母类型转换为 char(而非字符串),比较将检查它们的基础 Unicode 值。
为什么这么多语言将此作为默认行为我不太确定。
我正在上一门关于运算符的课程,在练习中出现了这个例子,说明 'a' > 'A' === true。它没有解释为什么它是真的。我尝试自己研究了一下,认为这可能与词典顺序有关,但这似乎不对。我还检查了它是否与 ASCII 和 Unicode 字母表上的位置有关,但似乎也不是这种情况。有人可以解释为什么 JavaScript 中的小写 'a' 大于大写 'A' 吗?
因为 a
在 ASCII 和低端 UTF8 中大于 A
console.log("a > A is","a">"A","because a is","a".charCodeAt(0),"and A is","A".charCodeAt(0))
相关:Is there any logic behind ASCII codes' ordering?
这是因为 a
的 ASCII
值大于 A
:
console.log('a'.charCodeAt(0)) // 97
console.log('A'.charCodeAt(0)) // 65
console.log(97 > 65) // true
您可以在下面的 ascii table 中看到每个字符的值
一=97
A = 65
所以 'a' 大于 'A'
大多数语言都能有效地完成同样的事情:
例如 PowerShell
[char]'a' -gt [char]'A'
我们可以将字母类型转换为 char(而非字符串),比较将检查它们的基础 Unicode 值。
为什么这么多语言将此作为默认行为我不太确定。