函数的定义:
具有一定功能,封装成函数。
【函数三要素】
函数名
参数(形参,实参)
返回值
声明函数
1、字面量创建(有叫声明式函数)
function 函数名() {函数体}
2、构造函数
let 函数名 = new Function(); console.log(typeof 函数名);//function
3、函数表达式
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);