深入了解JavaScript(二)

本文深入解析JavaScript函数的定义、调用、参数处理及内置对象arguments的使用。探讨了return语句的作用,函数参数的灵活性,以及如何利用apply方法实现对象方法的劫持和数组的扩展。同时介绍了匿名函数的应用场景及其在避免全局变量污染方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1) 函数

  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; 
  1. 函数内置对象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
  1. 剩余参数
    包含在调用函数时使用的未捕获整个参数列表到这个变量中
function avg(...args) {
  var sum = 0;
  for (let value of args) {
    sum += value;
  }
  return sum / args.length;
}

avg(1,2, 3, 4, 5); // 3
  1. 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]
  1. 匿名函数
    用途:通常不希望再次使用(使用一次的函数)的函数可以定义为匿名函数
    匿名函数可以有效的保证在页面上写入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的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值