是每次调用javascript str.length还是只调用一次?

Sil*_*ght 8 javascript

哪种方式更有效?有区别吗?

这个:

var str = 'abc';

if(str.length == 20) {
    //...
}

if(str.length == 25) {
    //...
}

// and so on
Run Code Online (Sandbox Code Playgroud)

或者这一个:

var str = 'abc';
var length = str.length;

if(length == 20) {
    //...
}

if(length == 25) {
    //...
}

// and so on
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 9

在可能实际上很重要的浏览器中(读取:IE),它将每次计算,因此将值存储在局部变量中会更快.

http://jsperf.com/string-length


曾经是那样的

var len = someArray.length;
for (var i=0; i<len; i++) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

比...更快

for (var i=0; i<someArray.length; i++) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是现在,V8(Chrome的JS引擎)优化后者以比前者更快的速度运行.这很棒 - 请记住,你真的不需要担心Chrome的性能.


如果您想要了解有关JavaScript性能的更多信息,那么高性能JavaScript是一个可靠的读物.尽管如此,从一开始就采用其建议,因为在IE(6,7,8或甚至9)中使代码运行得更快的技巧可能会使代码在Chrome或Firefox 4中运行得更慢.