函数
即把可以实现一定功能的代码,封装成一个函数。
函数声明不带表调用,什么时候用,执行函数体。
声明函数
字面量声明
书写格式: 关键字 标识符(函数名) 小括号 {代码块}
Function f70 ( ) {代码块}
调用函数 (执行函数体)
书写格式:
函数名 小括号:
function serach() {
console.log(n
);
}
serach ();//n
构造函数声明
书写格式: 关键字 标识符 赋值符号 new Function( );
let f70 = new Function( );
// 匿名函数表达式
let f70 = function () {
console.log(“1234”);
}
f70();//1234
函数三要素
- 1、函数名
- 2、返回值(函数100%有返回值)
- 若写了,则返回return后的内容。
- 若没写return则返回undefined
- 注:return具备终止函数的功能。
- 若需要返回多个值,需要return后面的内容是引用数据类型。
function serach() {
let i = 1;
let j = 2;
console.log(您当前余额为:1000
);
let num1 = i + j;
let num2 = i - j;
return [num1, num2];
console.log(123);
}
let i = serach();
console.log(i);//您当前余额为:1000 [ 3, -1 ]
【参数】
//可以在函数的()中指定一个或多个形参,
//多个形参之间用逗号隔开,声明形参就相当于在函数内部声明了对应的变量,并不赋值。
function f70(a,b){
console.log(a+b);
}
f70 (1,2);//3
//在调用函数的时候可以在()里指定实参,实参将赋值于形参。
- 1、形参(形式参数)
- 在函数声明的时候
- 2、实参(实际参数)
- 在调用函数的时候
- 形参的个数比实参多,多的形参数为undefined
- 实参的个数比形参多,多的实参数不会使用。
不定参数 …形参。
注:1,接受多的实参内容(以数组形式)
2,只能写在最后一个形参位置(其他位置。会报错)
function f70 (a,b,…c) {
console.log(a,b,c);
}
f70(1,2,3,4,5,6)//1 2 [ 3, 4, 5, 6 ]
函数名.lenth 返回函数的形参个数
注:1,不计数“不定参数”即…形参
2、只计算默认值之前的形参个数。
function f70 (a=1,b,c,d) {
console.log(a,b,c);
console.log(f70.length);//0
}
f70(1,2,3,4,5,6);
箭头函数
1.省略function关键字。
2.如果只有一个参数,可以省略小括号
3.如果函数体只有一条语句,可以省略大括号。
4.如果函数体只有一条语句,并且需要返回这条语句的结果。
则可以省略return关键字
5.不可以使用arguments
6.不会把自己的this绑定到函数上
7.不可以用作构造函数。
function f70 (a) {
console.log(a);//2
}
f70(2);
可以写成:
let f70 = a => console.log(a);//1
f70(1);
let f72 = a => a+1
let f73 = f72(100);
console.log(f73);//101
回调函数
当一个函数b,提供给函数a当参数,则b就是回调函数
如下所示:
function a(temp){
console.log(f70
);
temp();
}
function b(){
console.log(f71
);
}
a(b);//f70 f71
箭头函数的使用场景:
let f70 = [2,1,4,3,5,7,6,8];
//数组排序
//升序
let arr1 = f70.sort((a,b) => a - b)
console.log(arr1);//1,2,3,4,5,6,7,8
//降序
let arr2 = f70.sort((a,b) => b - a)
console.log(arr2);//1,2,3,4,5,6,7,8
数组的方法
//数组的方法every
//判断数组中的每个值,是不是都满足需求。
let f70 = [2,1,4,3,5,7,6,8];
let state = f70.every(a => a>1);
console.log(state);//false
//数组的方法some
//判断数组中的每个值,是不是都满足需求。
//注:只要有一个满足,就返回true.都不满足才会返回false
let f70 = [2,1,4,3,5,7,6,8];
let state1 = f70.some(a => a>2);
console.log(state1);//true
//filter过滤
//返回满足条件的值
let f70 = [2,1,4,3,5,7,6,8];
let state2 = f70.filter(a => a%2==0);
console.log(state2);//[ 8, 6, 4, 2 ]
console.log(f70);
//数组的方法map
// //遍历出数组中的每个值。
//执行箭头函数的需求,把最终的结果,以新数组的方式返回。
//注:都不会改变原数组
let f70 = [2,1,4,3,5,7,6,8];
let state3 = f70.map(a => a%2==0);
console.log(state3);//true, false,true, false,false, false,true, true
let state4 = f70.map(a =>a-1);
console.log(state4);//1, 0, 3, 2,4, 6, 5, 7
//数组的方法forEach
// 遍历出数组中的每个值。
//执行箭头函数的操作,无返回。
//注:都不会改变原数组
let f70 = [2,1,4,3,5,7,6,8];
state = f70.forEach(a => a-1 )
console.log(state);//undefined
f70.forEach(a=>{console.log(a-1);})//1, 0, 3, 2,4, 6, 5, 7
立即执行函数
//立即执行函数
//创建即调用,调用即销毁
//使用场景:关于一次性变量(时间)
(function f74() {
console.log(“f74”);
})();//f74