JS进阶-函数进阶(一)

• 函数提升

函数提升与变量提升比较类似,是指函数在声明之前即可被调用。

JS进阶-函数进阶(一)_第1张图片

总结:

1. 函数提升能够使函数的声明调用更灵活

2. 函数表达式不存在提升的现象

3. 函数提升出现在相同作用域当中

 

• 函数参数

1. 动态参数

arguments 是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参

JS进阶-函数进阶(一)_第2张图片

 

2. 剩余参数

剩余参数允许我们将一个不定数量的参数表示为一个数组

1. ... 是语法符号,置于最末函数形参之前,用于获取多余的实参 

2. 借助 ... 获取的剩余实参,是个真数组

JS进阶-函数进阶(一)_第3张图片

JS进阶-函数进阶(一)_第4张图片 

开发中,还是提倡多使用 剩余参数。 

总结:

1. 剩余参数主要的使用场景是?

  • 用于获取多余的实参

2. 剩余参数和动态参数区别是什么?开发中提倡使用哪一个?

  • 动态参数是伪数组
  •  剩余参数是真数组
  • 开发中使用剩余参数想必也是极好的

3.展开运算符

展开运算符(…),将一个数组进行展开

JS进阶-函数进阶(一)_第5张图片

典型运用场景: 求数组最大值(最小值)、合并数组等 

JS进阶-函数进阶(一)_第6张图片

展开运算符 or 剩余参数 

  • 剩余参数:函数参数使用,得到真数组
  • 展开运算符:数组中使用,数组展开

JS进阶-函数进阶(一)_第7张图片

• 箭头函数

目的:引入箭头函数的目的是更简短的函数写法并且不绑定this,箭头函数的语法比函数表达式更简洁

使用场景:箭头函数更适用于那些本来需要匿名函数的地方

1. 基本语法

JS进阶-函数进阶(一)_第8张图片

JS进阶-函数进阶(一)_第9张图片 

JS进阶-函数进阶(一)_第10张图片 

JS进阶-函数进阶(一)_第11张图片 

总结:

1. 箭头函数属于表达式函数,因此不存在函数提升

2. 箭头函数只有一个参数时可以省略圆括号 ()

3. 箭头函数函数体只有一行代码时可以省略花括号 {},并自动做为返回值 被返回

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

2. 箭头函数参数

1. 普通函数有arguments 动态参数

2. 箭头函数没有 arguments 动态参数,但是有 剩余参数 ..args

JS进阶-函数进阶(一)_第12张图片

3. 箭头函数this

在箭头函数出现之前,每一个新函数根据它是被如何调用的来定义这个函数的this值, 非常令人讨厌。 箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this。

JS进阶-函数进阶(一)_第13张图片

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

JS进阶-函数进阶(一)_第14张图片 

在开发中【使用箭头函数前需要考虑函数中 this 的值】,事件回调函数使用箭头函数时,this 为全局的 window,因此 DOM事件回调函数为了简便,还是不太推荐使用箭头函数 

JS进阶-函数进阶(一)_第15张图片

总结:

1. 箭头函数里面有this吗?

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

2. DOM事件回调函数推荐使用箭头函数吗?

  • 不太推荐,特别是需要用到this的时候
  • 事件回调函数使用箭头函数时,this 为全局的 window

最后,其实JS中的箭头函数就是Java中的lambada表达式,用法几乎一模一样

 

你可能感兴趣的:(js,算法)