使用函数或类型

时间:2016-07-09 16:22:40

标签: javascript typeof

typeof运算符比函数调用慢多少?或者它可以忽略不计并进行微观优化?

if (isNumber(myVar)) {
}

if (typeof myVar === 'number') {
}

2 个答案:

答案 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;
  }
};