茁壮网络

1、

var arr = [1,2,3,4,5]

arr.pop()       -->5  返回

alert(arr)       -->[1,2,3,4]

 

arr.push(9)    -->5  返回的是数组的长度

 

var arr = [1,2,3,4,5,6,7,8]
undefined
arr.splice(1,2)
[2, 3]
arr
[1, 4, 5, 6, 7, 8]

arr.splice(1,2,1,2,3,4,5)  //第一个参数是从哪里删除,第二个是删除几个,其他都是插入的

 

2、

eval("a=1,b=2,alert(a+b)")        -->3

 

3、

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        var inner = function(){
            // console.log(document.getElementById("#div").innerHTML);
            console.log(document.getElementById("div").innerHTML);
        }
    </script>
</head>
<body onclick="inner()">
    <div id="div"><p id="p">广东工业大学</p></div>
</body>
</html>

结果为:<p id="p">广东工业大学</p>

 

4、

var arr = new Array()
undefined
arr
[]
arr[1] = "test"
"test"
arr[0]
undefined
arr[1]
"test"
arr
[undefined × 1, "test"]

 

5、

var str = "welcome to my school"
undefined
str.substring(7,5)
"me"

 

6、排序

http://www.nowamagic.net/librarys/veda/detail/980

快速排序

//(1)在数据集之中,选择一个元素作为"基准"(pivot)。
//(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
//(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
function sort6(array) {
  var tmp_array = array.slice(0), result,
  quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
  };
  result = quickSort(tmp_array);
  return result;
}

wo

    function sort(array){
        var result;
        var quitsort = function(arr){
            if(arr.length<1)return arr;
            var index = Math.floor(arr.length/2);
            var indexarr = arr.splice(index,1)[0];
            var left = [],right = [];
            for(var i = 0;i < arr.length;i++){
                if(arr[i]<indexarr) left.push(arr[i]);
                else right.push(arr[i]); 
            }
            return quitsort(left).concat(indexarr,quitsort(right));
        }
        result = quitsort(array);
        return result;
    }

 

7、Ajax的流程以及5个状态

 

8、for两层循环的优化

第一种最常见的for循环
//第一种循环
for(var i=0;i<demo.length;i++){

}
这种循环是最常见的。我也一直都是用这样的。听完课程才知道,这种是最烂的。最消耗资源的循环。
每一次i<demo.length,都需要做一次判断,非常消耗时间,每一次i++,都需要消耗CPU的计算能力。
当数据量达到一百万以上的时候,此时这个循环就容易出现内存溢出,程序崩溃(当然,一般的程序基本上都不会有那么大的数据量)。
改进
var d=demo.length;
var i=0;
for(;i<len;i++){
}
当声明一个临时变量存储demo.length时,这时消耗的时间将少得多。
或者
while(d--){
    demo[i];
}
比较少见的一种循环,速度比上一种稍微快一点,


4种循环类型中,只有for-in循环比其他几种明显要慢:主要原因在于每次迭代操作会同时搜索实例或原型属性,每次迭代都会产生更多开销。 
如果循环类型与性能无关,可以从以下两个可选因素来提高整体性能 
1.每次迭代处理的事务 
2.迭代的次数 

减少迭代的工作量 
很明显,如果一次循环迭代要花很长时间去执行,那么多次循环需要花更多的时间。一个提升循环整体速度的好方法就是限制循环中耗时的操作数量。 

 上面的每个循环中,每次进行循环体时都会产生如下操作: 
   1. 一次控制条件中的属性查找(items.length) 
   2. 一次控制条件中的数值大小的比较(i<items.length) 
   3. 一次控制条件结果是否为true的比较(i<items.length == true) 
   4. 一次自增操作(i++) 
   5. 一次数组查找(items[i]) 
   6. 一次函数调用( process(items[j]);) 

优化循环的第一步就是减少对象成员及数组项的查找次数。前面例子中每次循环都要查找items.length,这样做很耗时,由于该值在循环运行过程中从未变过,因此产生了不必要的性能损失,提高整个循环的性能很简单,只查找一次属性,并把值存储到一个局部变量中,然后在控制条件中使用整个变量 

减少迭代次数 
即使是循环体中最快的代码,累计迭代上千次也会慢下来。此外,循环体运行时也会带来小性能开销,不仅仅是增加总体运行时间。减少迭代次数能获得更加显著的性能提升。下面介绍一种广为人知的限制循环迭代次数的模式被称为“达夫设备(Duff's Device)”: 

 

9、prototype.move

 

posted @ 2016-10-20 23:42  chenxj  阅读(346)  评论(0)    收藏  举报