函数进阶

2023/11/19 jses6

# 函数进阶

# 1、函数提升

函数的定义,包括函数的具体方法,也是会被提升到当前作用域的最前面,所以(明面上)可以在声明前调用

# 2、函数参数

# 2.1 动态参数

允许传入任意个参数,函数内部会生成一个arguments伪数组,包含了所有的实参,只要函数声明时不写形参就行了

JS可变参数的实现二:rest 参数(...)

一定要写在最后一个参数上

在ES6标准中引入了 rest 参数(形式为…变量名),用于获取函数的多余参数。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。非常适合处理变长参数的情况。

Rest就是为解决传入的参数数量不一定,它表示将多余的参数接受并放到一个数组里; Rest参数 本身就是数组,数组的相关的方法都可以用。

可变参数的实现语法:

function(a, b, ...theArgs) {`` ``// ...``}
1

theArgs是一个真数组(可以使用push等方法)

# 3、展开运算符

能把数组展开,不会修改原数组,也就是输出1 3 4 5 7

    let arr =[1,3,4,5,7];
    console.log(...arr);
1
2

用处1:

数组没有封装求最大值,最小值的方法

可以使用展开运算符+Math.max(a,x,y...)

来获得最大值(参数里写展开运算符...arr)

本质是有逗号的,只是log出来没逗号

用处2:

合并数组

let arr1 =[1,3,4,5,7];
    let arr2 =[8,9,11];
    let arr=[...arr1,...arr2];
1
2
3

# 4、箭头函数

适合那些原本就需要匿名函数的地方

基本语法直接略过

圆括号的函数体返回对象字面量表达式

const fn = (uname)=>({uname : uname})

# 4.1 参数详解

  • 没有arguments动态参数,可以使用rest剩余参数

# 4.2 this

普通函数的this是指向调用者的,在方法里直接写log(this)指向的是window

箭头函数不会创建自己的this,只会从自己的作用域链的上一层沿用this

也就是说上一个作用域写了this就直接沿用上一层的this指向,没写就直接指window,正常会指向dom节点的this也会直接指向window,所以dom事件的回调不推荐写箭头函数

Last Updated: 2024/8/29 07:25:14