(1) 函数
- 定义一个函数
function add(x, y) {
var sum= x + y;
return sum;
}
return语句返回一个值并结束该函数
add(1,2); //3
若没有return语句则会默认返回undefined
如果调用函数没有提供足够的参数,缺少的参数会被undefined代替
add(1);// 1 + nudefined = NaN
你还可以传递多与本身需要的参数个数的参数
//前面两个值相加,3被忽略了
add(1,2,3); //1 + 2 = 3;
- 函数内置对象arguments
arguments 是一个对应于传递给函数的参数的类数组对象。
此对象包含传递给函数的每个参数
function avg() {
var sum = 0;
for (var i = 0, j = arguments.length; i < j; i++) {
sum += arguments[i];
}
return sum / arguments.length;
}
avg(1,2,3,4,5); //3
- 剩余参数
包含在调用函数时使用的未捕获整个参数列表到这个变量中
function avg(...args) {
var sum = 0;
for (let value of args) {
sum += value;
}
return sum / args.length;
}
avg(1,2, 3, 4, 5); // 3
- apply()方法能劫持另外一个对象的方法,继承另外一个对象的属性
两个参数,第一个参数表示this指向的对象,若不指向对象则用null或undefined代替
第二个参数表示调用方法的参数
var obj = {
name = "Song";
age = 19;
myFun:function(A){
console.log(this.name);
console.log(this.age);
console.log(A)
}
};
var fun = {
name = "Zhang";
age = 20;
}
obj.myFun.apply(fun,["dream"]); //输出: Zhang 20 dream
obj.myFun.call(fun,"dream"); //输出: Zhang 20 dream
与call区别只是apply第二个参数是一个数组,而call直接用逗号隔开的参数
可以通过apply实现将一个数组添加到另一个数组
var array = ['1', '2'];
var item= [0, 1, 2];
array.push.apply(array, item);
console.info(array); // ["1", "2", 0, 1, 2]
- 匿名函数
用途:通常不希望再次使用(使用一次的函数)的函数可以定义为匿名函数
匿名函数可以有效的保证在页面上写入JavaScript,而不会造成全局变量的污染。
var a = 2;
var b = 5;
(function() {
var b = 3;
a += b;
})();
a; // 5
b; // 5
执行完匿名函数后,由于var的作用域为函数内部,匿名函数内部定义的b没有与外部定义的b相互冲突以致于输出b还是外部b的值,而a的值计算是在匿名函数内部所以a的值会等于a+匿名函数内部b的值