我在Crockford的书 Javascript:The Good Parts 中看到他做了这样的比较:
return typeof a < typeof b ? -1 : 1;
我自己做了测试,我认为这是不同类型的“排序”:
功能&lt;数字&lt;对象或数组&lt;字符串&lt;未定义
这是JS实际进行比较的方式吗?
答案 0 :(得分:4)
typeof
运算符返回一个字符串。字符串按其数值进行比较。
因此,<
比较顺序为:
type charCode ("tfnosux".charCodeAt(i)) Example
boolean 98 true
function 102 Date
number 110 123
object 111 []
string 115 ""
undefined 117 undefined
xml 120 <x></x>
tfnosux
是类型的第一个字符。 charCodeAt
方法返回JavaScript中字符的数字charCode。
我在前一个块中添加了每种类型的示例。大多数JavaScript开发人员都知道第一类。最终类型xml
不太为人所知,可以使用EX4上的typeof
获取。
演示typeof
:http://jsfiddle.net/9G9zt/1/
答案 1 :(得分:1)
这不重要。 typeof
返回一个字符串,比较运算符适用于字符串,方法是对代码点值值序列执行“简单的词典排序”。
基本上,如果一个字符串以另一个字符串开头,那么这两个字符串中的较大者,否则将比较两者之间不同的第一个字符位置。
见spec
的第11.8.5节