文档详情

JS高级编程课件05_JavaScript函数的增强知识.pdf

发布:2024-12-03约5.7千字共26页下载文档
文本预览下载声明

JavaScript函数的增强知识

王红元coderwhy

目录

1函数属性和arguments

content

2纯函数的理解和应用

3柯里化的理解和应用

4组合函数理解和应用

5with、eval的使用

6严格模式的使用

coderwhy函数对象的属性

◼我们知道JavaScript中函数也是一个对象,那么对象中就可以有属性和方法。

◼属性name:一个函数的名词我们可以通过name来访问;

◼属性length:属性length用于返回函数参数的个数;

注意:rest参数是不参与参数的个数的;

coderwhy认识arguments

◼arguments是一个对应于传递给函数的参数的类数组(array-like)对象。

◼array-like意味着它不是一个数组类型,而是一个对象类型:

但是它却拥有数组的一些特性,比如说length,比如可以通过index索引来访问;

但是它却没有数组的一些方法,比如filter、map等;

coderwhyarguments转Array

◼在开发中,我们经常需要将arguments转成Array,以便使用数组的一些特性。

常见的转化方式如下

◼转化方式一:

遍历arguments,添加到一个新数组中;

◼转化方式二:较难理解(有点绕),了解即可

调用数组slice函数的call方法;

◼转化方式三:ES6中的两个方法

Array.from

[…arguments]

coderwhy箭头函数不绑定arguments

◼箭头函数是不绑定arguments的,所以我们在箭头函数中使用arguments会去上层作用域查找:

coderwhy函数的剩余(rest)参数

◼ES6中引用了restparameter,可以将不定数量的参数放入到一个数组中:

如果最后一个参数是...为前缀的,那么它会将剩余的参数放到该参数中,并且作为一个数组;

◼那么剩余参数和arguments有什么区别呢?

剩余参数只包含那些没有对应形参的实参,而arguments对象包含了传给函数的所有实参;

arguments对象不是一个真正的数组,而rest参数是一个真正的数组,可以进行数组的所有操作;

arguments是早期的ECMAScript中为了方便去获取所有的参数提供的一个数据结构,而rest参数是ES6中提供并且希望以此

来替代arguments的;

◼剩余参数必须放到最后一个位置,否则会报错。

coderwhy理解JavaScript纯函数

◼函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念;

在react开发中纯函数是被多次提及的;

比如react中组件就被要求像是一个纯函数(为什么是像,因为还有class组件),redux中有一个reducer的概念,也是要求

必须是一个纯函数;

所以掌握纯函数对于理解很多框架的设计是非常有帮助的;

◼纯函数的维基百科定义:

在程序设计中,若一个函数符合以下条件,那么这个函数被称为纯函数:

此函数在相同的输入值时,需产生相同的输出。

函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关。

该函数不能有语义上可观察的函数副作用,诸如“触发事件”,使输出设备输出,或更改输出值以外物件的内容等。

◼当然上面的定义会过于的晦涩,所以我简单总结一下:

确定的输入,一定会产生确定的输出;

函数在执行过程中,不

显示全部
相似文档