ming

Ming

a about xiaoming story

Github

E:421543076@qq.com

Q:421543076

Javascript权威指南核心参考笔记(一)

12 May 2015 - 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