函数

函数

特点:低偶合,偶合,重复;

函数的定义:可以实现代码的复用,降低偶合度。

如何创建函数

格式1:字面量创建函数

关键字  自定义函数名【可省略】(参数){

函数体:由多个语句组成的。
}

格式2:命名函数表达式

关键字   自定义函数名  赋值符号   关键字   函数名称(参数【0到多个】){

函数体,多个语句组成
}

格式3:匿名函数表达式

自定义函数名1,可以实现函数功能
自定义函数名2,只是函数的属性(即函数的名字),但无函数功能(使用时会报错)

函数的调用

调用函数方式:JG445();
1、执行了代码
2、获取函数的返回值

一旦某个函数是空函数(没有函数体)
系统会默认添加return;

return只能返回一个值;
如果想返回多个值,可以使用数组的形式;

//函数的参数
放在函数的小括号里

参数分为两种:

形式参数(形参):函数在声明时,写在小括号里的变量;参数名字是自定义的

let JG445 = function(one,two){
let sum = one+two;
console.log(one,two,sum);
}

JG445(4,1);

实际参数(实参):函数在调用时,写在小括号里的参数;
JG445(4,1);//4,1就是参数;

注:在JS里形参和实参的个数可以不相等。

形参与实参相同个数:

以下两种情况都不会报错:

不定参数

形参比实参多:
多的形参的值是undefined

实参比形参多:

    多的实参可以通过arguments进行获取
    例子:arguments[i];i是下标(伪数组对象);
    多出的实参,以数组形式存储
    例:
    funtion Pizza(a,b,...c){
    console.log(a);//1
    console.log(b);//2
    console.log(c);//[3,4,5,6,7]
    }
    Pizza(1,2,3,4,5,6,7);

arguments实参列表;(使用的时候用下标来取值;)//arguments[2];

函数的属性
name
length
caller(告知谁可以调用当前函数)父级不能用,子级能用;
callee(可以指向当前调用arguments的函数)

【箭头函数】

格式:

关键字  变量名   赋值符号  ()  =>   {}
   let        pizza            =      ()  =>  {}

需求:带参数(1个)

let           pizza           =     a   =>   {}

需求:带多个参数

let           pizza              =   (a,b)           =>{}     

需求:返回值

let   pizza   =   (a,b)=>返回值
let   pizza     =(a,b)   =>a  //会返回a的值

注:只有当return存在一个时才使用。

如果一个函数只有一条执行语句,可以进行箭头函数的使用。

let  malingshu  = function (a){
chonsole.log(“nihao”)
}

转换箭头函数如下:

let   malingshu  =  (a) =>  console.log("nihao");

【箭头函数优点】
1、比普通声明函数更简洁;
2、只有一个参数时,可以不用小括号;
3、只有一条执行语句的时候,可以不用大括号;
4、只有一条return时,可以不用写return;
5、不会把自己的this绑定到函数上;

【提升】
变量提升、函数提升
作用域(全局作用域、局部作用域)
1、全局作用域
2、函数作用域
3、eval作用域、

函数提升:只提升以字面量声明的函数
例:

JG445();
function  pizza(){}
输出能显示下标
let arr=[2,3,4];
arr.sort();
arr.forEach(function(a,b){
  console.log(a);
  console.log(b);
}
)

函数作用域里的:
【预解析/预编译】(扩展)

1、创建AO对象

activation boject

1、声明变量(只取变量名)
2、形参(只取形参名)

AO{
a:
b:
c:
}

2、给AO对象赋值为undefined

AO{
a:undefined
b:undefined
c:undefined
}

3、把形参和实参统一

AO{


}

4、在函数体里找函数声明,并把它赋值给自己
只找以字面量形式声明的函数
函数提升只提升字面量
变量提升只提升var声明

这两个在一起,函数提升权重大于变量提升

global object(执行上下文)

GO{
i:undefined

}
let arr = [1,2,3,4.5]

基础版

进阶版

let    arrNew = arr.reduce(
function (prev ,next){

//求最大值和最小值

returu prev < next ? prev : next;
8
if(prev>next){
return prev;
}else{
return next;
}

console.log(arrNew)

some() || 一真全真

every() || 一假全假 c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值