JS高级编程课件05_JavaScript函数的增强知识.pdf
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设备产生的外部输出无关。
该函数不能有语义上可观察的函数副作用,诸如“触发事件”,使输出设备输出,或更改输出值以外物件的内容等。
◼当然上面的定义会过于的晦涩,所以我简单总结一下:
确定的输入,一定会产生确定的输出;
函数在执行过程中,不