typeof运算符比函数调用慢多少?或者它可以忽略不计并进行微观优化?
if (isNumber(myVar)) {
}
if (typeof myVar === 'number') {
}
答案 0 :(得分:4)
或者它可以忽略不计并进行微观优化?
是的,这绝对是值得担心的当且仅当您将相关代码识别为性能瓶颈时,这实际上是不可能的。它的微优化。函数调用非常,非常快,即使它们没有被JavaScript引擎优化。当Array#forEach
首次出现在场景中时,我常常担心函数调用开销。 即使在那时,它也不是问题,即使是我能找到的最老,最慢的JavaScript解释器:IE6中的那个。我的博客详情:foreach
and runtime cost
是否需要更长时间......一根绳子多长时间?它完全取决于您使用的JavaScript引擎,以及所讨论的代码是否被识别为“热”"引擎发现(假设它是像V8一样的引擎,分阶段工作并优化热点)。
现代引擎可能会强调如果这样做变得很重要。这不是保证。
答案 1 :(得分:3)
或者它可以忽略不计并进行微观优化?
它可以忽略不计,微观优化。
如果您想检查某些内容是否为某个数字,我建议您使用isNaN
检查,然后转换为数字。
if (!isNaN(myVar)) {
myVar = +myVar;
}
通过这种方式,您实际上并不关心如何将值视为数字。
然后,使用API的人可以选择传递可被视为数字的对象:
myVar = {
valueOf: function () {
return 5;
}
};