Javascript权威指南核心参考笔记(一)
核心参考笔记很长,我会分多个部分来记录。
arguments[] 函数参数数组
arguments.callee 指当前正在执行的函数(通过它可以引用匿名函数自身)
var factorial = function(x){ if(x<2) return 1; else return x*arguments.callee(x-1);//调用自身 } var y = factorial(5); //120
arguments.length 传递给函数的参数个数,以及Arguments对象中数组元素的个数
function check(args){ console.log(args);//[1,2] var actual = args.length;//2 var expected = args.callee.length;//3 if(actual != expected){ throw new Error("参数个数有误:期望值:"+ expected + ";实际值:"+ actual); } } //演示如何使用check()方法的实例函数 function f(x,y,z){ check(arguments); return x+y+z; } f(1,2);
Array 数组
方法
Array.concat() 把元素衔接到数组中,返回新数组。
var a = [1,2,3]; var b = a.concat(4,5); console.log(a) //[1,2,3] console.log(b) //[1,2,3,4,5]
Array.every() 测试断言函数是否对每个元素为真
[1,2,3].every(function(x){ return x < 5 }) // true 所有元素都
Array.filter() 返回通过断言的元素的新数组
[1,2,3].filter(function(x){return x > 1;}); //[2,3]
Array.forEach() 为每一个数组元素调用一个函数,无返回值。
var a = [1,2,3]; a.forEach(function(x,i,a){ a[i]++; console.log(x,i,a); }); //输出: //1 0 [2, 2, 3] //2 1 [2, 3, 3] //3 2 [2, 3, 4]
Array.indexOf() 查找数组
返回匹配元素的位置,不匹配则返回-1
['a','b','c'].indexOf('b') // 1 ['a','b','c'].indexOf('d') // -1 ['a','b','c'].indexOf('a',1) // -1
Array.lastIndexOf() 反向查找数组
等同于indexOf(),从数组最后一个元素开始查找
Array.join() 将数组元素衔接为字符串
var a = new Array(1,2,3,"ming"); var s = a.join("+"); //s = "1+2+3+ming";
Array.length 数组长度
Array.map() 从数组元素中计算新值,返回新数组。
[1,2,3].map(function(x){return x*x}); //[1,4,9]
Array.pop() 移除并返回数组的最好一个元素
var stack = [1,2,3]; var arr2 = []; stack.pop(); //stack:[1,2] 返回: 3 arr2.pop(); //stack:[] 返回:undefined
Array.push 给数组追加元素,返回新数组长度
var stack = [1,2]; stack.push(3,4) //stack:[1,2,3,4] 返回:4
Array.reduce 从数组元素中计算出一个新值,返回计算后的值
var stack = [1,2]; stack.reduce(function(x,y){console.log(x,y); return x*y},9) //返回:216 /*计算过程 *9 1 *9 2 *18 3 *54 4 *216 */
Array.reduceRight 从右到左缩减数组,返回计算后的值,用法同上
Array.reverse() 颠倒数组中的元素顺序
var stack = [1,2,3]; stack.reverse(); //stack:[3,2,1]
Array.shift() 移除数组的第一个元素,返回被移除的元素
var stack = [1,2,3]; stack.shift(); //stack:[2,3] 返回:1