JavaScript 访问对象属性的运行时复杂度 O(?) 是多少?


var obj = {};
obj["A"] = true;
obj["B"] = true;
obj["C"] = true;
console.log(obj["D"]);

上面的代码将打印"未定义"。当javascript尝试访问obj["D"]时,运行时的复杂性是多少?我想它会与它尝试访问 obj["A"]

] 相同?

我之所以问这个问题,是因为我正在比较这两个代码之间的效率:

//Code 1
var x = ["a","b","c"];
var y = ["a","b","c"];
for(i = 0; i<x.length; i++){
    for(j = 0; j<y.length; j++){
        console.log(i==j);
    }
}
//Code2
var _x = {};
var _y = ["a", "b", "c"];
_x["a"] = true;
_x["b"] = true;
_x["c"] = true;
for(i = 0; i<_y.length; i++){
    if(_x[_y[i]] != undefined){
        console.log("something");
    }
}

我想知道哪一个在运行时复杂性方面更有效。我想如果访问对象属性需要 O(n),那么两个代码的运行时会是一样的吗?

Javascript语言没有对操作的时间复杂度设置任何要求,因此性能将取决于您使用的Javascript解释器。

(在某些情况下,它甚至可能不是固定的;大多数现代Javascript解释器执行运行时优化,这可能会改变操作的时间复杂度。

最新更新