JS中逻辑运算符的字符串比较

时间:2017-12-05 08:20:18

标签: javascript string attributes

我试图允许用户定义的逻辑标准。由于用户定义基本上是字符串,因此我试图通过避免字符串比较来提高代码效率。例如,像a == 10这样的简单测试将由数组

表示
var userDef = ['a', '==', 10]

为了使逻辑评估更有效率,我想创建一个像ffg这样的对象:

var binaryOperator = {'==': 0, '>': 1, '<': 2}

..所以当我挖掘阵列时,我可以做到。

if(binaryOperator[userdef[1]] == 0)
{
    return (obj[userDef[0]] == userDef[2])
}

......当然obj.a =某事。从表面上看,上面的代码避免了字符串比较。

但它真的吗?引用binaryOperator[userdef[1]]真的很快还是在某处还涉及字符串比较

换句话说,thisObj.athisObj['a']之间是否存在性能差异?

1 个答案:

答案 0 :(得分:2)

您可以省略对运算符的检查并将函数作为值,如

var binaryOperator = {
        '==': function (a, b) { return a === b; },
        '<': function (a, b) { return a < b; },
        '>': function (a, b) { return a > b; }
    };

Javascript中的对象可以访问 O(1)

进一步阅读: