茁壮网络
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

浙公网安备 33010602011771号