我们知道全局下定义var i=1,然后访问window.i也可以拿到结果,似乎表面上没啥差别,但是测试一看还是差别很大        var m = 1;
        var date1 = new Date();
        for (var i = 100000; i--; ) {
            m;
        }
        alert(new Date() - date1); //31毫秒        window.n = 1;
        var date2 = new Date();
        for (var j = 100000; j--; ) {
            window.n = 1;
        }
        alert(new Date() - date2); //219毫秒

解决方案 »

  1.   

    window.xxx 是访问属性,需要进行属性查找, 而直接变量名是保存了相关的引用,属于直接访问,当然快了啊。所以通常在长循环的时候,都会声明个len变量,保存数组的length属性
      

  2.   

    不好意思,那个赋值没有的,还是那个差距
    var m = 1;
            var date1 = new Date();
            for (var i = 100000; i--; ) {
                m;
            }
            alert(new Date() - date1); //31毫秒        window.n = 1;
            var date2 = new Date();
            for (var j = 100000; j--; ) {
                window.n;
            }
            alert(new Date() - date2); //219毫秒