函数的定义:
具有一定功能,封装成函数。
【函数三要素】
-
函数名
-
参数(形参,实参)
-
返回值
-
声明函数
1、字面量创建(有叫声明式函数)
function 函数名() {函数体}
2、构造函数
let 函数名 = new Function();
console.log(typeof 函数名);//function3、函数表达式
let 函数名1 = function 函数名2(){}
函数名1();
//匿名函数表达式
let 函数名1 = function(){}
函数名1();函数的调用:
函数名();
返回值
在函数体里写return 表达式;
当函数没有返回值时会输出undefined
console.log(函数名());
function b(){
return 1+2;
}
console.log(b());//3
参数
function c(a,b){
return a+b;
}
console.log(c());//NaN
console.log(c(1,2));//3
形参:函数声明
1、形参个数多,多的形参值为undefined
function aa(a,b,c,d){
console.log(a,b,c,d);
}
aa(1,2,3);//1 2 3 undefined
aa(1,2,3,4,5);//1 2 3 4
2、形参默认值:形参名=表达式
function dd(a,b="a",c){
console.log(a,b,c);
}
dd();//undefined a undefined
3、【形参的个数】
函数名.length
注:不会统计默认值的形参,默认值以后的形参也不统计。因此,默认值的形参往后放。
function ee(a,b,c,d,e){
console.log(ee.length);
}
ee();//5
function ff(a,b,c,d='a',e){
console.log(ff.length);
}
ff();//3 当有默认值时,只统计到有默认值的前一个形参的个数
实参:函数调用
1、实参个数多,...标识符接收多的实参并转换为数组
function eg(a,b,c,...d){
console.log(a,b,c,d);
}
eg(1,2,3,4,5);//1 2 3 [ 4, 5 ]
function bb(a,b,c,...d){
// console.log(a,b,c,d);
d.push("a");//可以用数组的方法
console.log(d);
}
bb(1,2,3,4,5);//[ 4, 5, 'a' ]
2、arguments存储所有实参;arguments[下标]
【实参个数】
arguments.length
但arguments不是数组(类数组),原因:不能使用数组的方法
function cc(){
console.log(arguments[0]);//1
console.log(arguments[3]);//4
// arguments.push("a");
//报错 arguments.push is not a function
console.log(arguments.length);//5
console.log(arguments);//[Arguments] { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }
console.log(typeof arguments);//object
}
cc(1,2,3,4,5);