函数进阶
Sunday 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
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
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事件的回调不推荐写箭头函数