如何在JavaScript中加速number==?

如何在JavaScript中加速number==?,javascript,performance,Javascript,Performance,我在JS代码中遇到了一些性能问题。我有JS中的函数: function() { var up = this.parentCtx === null ? "" : this.parentCtx.toString(); if (up.length === 0) { if (this.returnState === this.EMPTY_RETURN_STATE) { return "$"; } else {

我在JS代码中遇到了一些性能问题。我有JS中的函数:

function() {
    var up = this.parentCtx === null ? "" : this.parentCtx.toString();
    if (up.length === 0) {
        if (this.returnState === this.EMPTY_RETURN_STATE) {
            return "$";
        } else {
            return "" + this.returnState;
        }
    } else {
        return "" + this.returnState + " " + up;
    }
};
当我在Google Chrome中分析代码时,我看到了这一点
this.returnState===this.EMPTY\u RETURN\u状态占用更多CPU时间。有没有加快速度的方法?

您正在比较值和值类型。虽然这不会造成太大的时间差异。如果这些类型可以直接与同一类型进行比较,那么使用==。

如果您担心一个简单的严格相等测试所需的时间,那么您可能是在进行微优化。除了不做之外,你没有什么可以加快平等测试的速度。我不认为这是数字花费很长时间的问题-你仍然在选择属性,例如,这个.x将触发潜在的完整属性链遍历。取决于链运行的深度,这可能是消耗时间的原因,而不是===运算符。我看到this.returnState===this.EMPTY\u RETURN\u STATE-你是如何看到的?有分析结果吗?这里有一些分析结果-==不直接比较值。事实上,如果是这样,我们就不需要严格的平等。如果值不属于同一类型,loose equals可能会转换这些值。因此,1==1将为真,它将涉及更改一个值。事实上,1==1也将返回true。就像1==01一样。我不熟悉JS实现的内部结构,但我真诚地怀疑===会比作为检查的一部分进行转换慢很多。我的意思是他们必须是相同类型的,说“直接”,然后使用==.-这个建议是基于什么?在给出答案之前,您有没有可能检查过说明书?