2.Function对象
2.1定义
函数:程序中用来保存一段可以重复使用的代码段的程序结构或对象,且可以完成一定的功能
2.2何时使用
在一段代码可能会被反复使用时,都需要先定义在函数中,然后反复调用来实现
2.3如何创建
2.3.1函数形式
function f(参数列表){
函数体
//return可有可无,根据需要选择
return 返回值;
}
形参:定义函数时的参数
实参:调用函数时传递的参数
return:函数的执行结果
2.3.2赋值形式
var fun=function(参数列表){
函数体
}
采用赋值形式创建函数,避免了函数在提升时遇到同名函数会覆盖的问题,示例如下:
//函数的提升
/*
函数提升
~~function f(){console.log(1)};~~
function f(){console.log(2)};
后一个的函数声明会覆盖掉上一个
f(); //2
f(); //2
*/
function f(){console.log(1)};
f();
function f(){console.log(2)};
f();
如果使用赋值形式,输出结果就是不同的
//函数的提升问题中,函数的声明会提前到当前作用域的最前面,但赋值是留在原始位置的
var f=function(){console.log(1)};
f();
var f=function(){console.log(2)};
f();
2.3.3构造函数形式
这种形式创建函数不常使用,
var f=new Function("参数1","参数2","函数体");
2.4重载
2.4.1定义
具有不同的参数个数,有相同的函数名的函数,会根据传入的参数的个数来选择执行函数
2.4.2 存在问题
JS中,当两个函数名相同时,无论参数是否相同,最后定义的一个函数会将前面的所有定义覆盖,只有最后一个函数会起作用。
2.4.3 解决办法
arguments对象
-
该对象是js中每一个函数自带的
-
专门用来接收传入函数的实参的,其中arguments.length表示传入参数的长度
-
该对象是一个类数组对象 – 像数组的对象
包含下标,有长度length属性,可以使用循环进行遍历
示例:
// 重载
// arguments 用于判断传入的参数的个数,参数不同执行的程序不同
function pay(){
if(arguments.length===0){
console.log("手机支付....");
}else if(arguments.length===1){
console.log(`现金支付${arguments[0]}元`);
}else
if(arguments.length===2){
console.log(`卡号${arguments[0]},扣款${arguments[1]}元`);
}else{
console.log(`密码不正确`);
}
}
pay();
pay(200);
pay("1245 6789",387);