在我正在处理的项目中,我们有一个带有'枚举'对象的脚本,如下:
var MyEnumeration = {
top: "top",
right: "right",
bottom: "bottom",
left: "left"
};
当我们必须使用可以使用其中一个文字值的东西时,我们只需要对MyEnumeration.left
进行比较,或者不管情况如何。
但是:至少在C#中,字符串值的评估速度通常比数字慢,因为字符串必须进行逐字符比较,以确保字符串A与字符串B匹配。
这将我带到问题:使用数字值实施MyEnumeration
会更快地执行吗?
var MyEnumeration = {
top: 0,
right: 1,
bottom: 2,
left: 3
};
答案 0 :(得分:1)
比较字符串时,JavaScript会从左到右逐个比较每个字符。但是在比较两个数字时,它只是一个比较。显然你可以猜出哪一个更快 - 数值比较。
然而,这种优化可能为时过早。除非你真的需要提高效率(比较频繁地比较数百个这样的值,或许?),不要过多考虑它们。
答案 1 :(得分:1)
它因Javascript引擎而异,因为这个jsperf让我感到惊讶:
http://jsperf.com/string-compare-vs-number-compare/2
在FF和Chrome中运行,结果是关于字符串或数字比较是否更快的结果。
你的问题的答案取决于它。如果您要定位单个浏览器,那么您可以编写可以利用其特定优化进行比较的代码。