有人说建议与0比较。
但是在javascript案例中,x === 0
包含的类型检查通常比x < 1
慢。
但这并不是一个很大的性能问题。我只是对两个操作的性能感到好奇。我认为x < 1
更好。
答案 0 :(得分:2)
有些人说建议与0比较。但是在javascript情况下,x === 0包括类型检查,它通常比x&lt; 1。
但它们并不等同。
x === 0
比较该数字是否等于零。就是这样。
x < 1
允许零,所有负数和所有数字都在1和0之间。
所以,我不明白为什么你必须比较他们两个。只需选择最能代表您正在验证的条件的那个。
并且x&lt; 1包括类型检查?
没有。您可以在浏览器控制台中轻松检查它。
console.log("0 < 1: " + (0 < 1));
console.log("'0' < 1: " + ('0' < 1));
console.log("0.5 < 1: " + (0.5 < 1));
console.log("'0.5' < 1: " + ('0.5' < 1));
console.log("20 < 1: " + (20 < 1));
console.log("'20' < 1: " + ('20' < 1));
答案 1 :(得分:2)
根据EMCA标准,这是我做的一个小比较 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
以下部分:
对于&lt; ,它会调用ToPrimitive
两次,这也会调用Type
两次,然后它将调用ToNumber
,它必须转换原语为了数字,因此在那里发生了很多类型转换,增加了CPU周期。
但是,对于 === ,如果左侧是数字,则会出现短路,从而导致CPU周期较短。
可以说明的一个例子如下:
console.log(1 < "2"); // This return true because "2" is converted to Number
console.log(1 === "1"); // This will return false immediately because it failed Type checking
因此,我会说 === 在CPU周期方面应该比&lt; 略快
希望它有所帮助!