自学内容网 自学内容网

arguments和纯函数的介绍

认识arguments

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

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

  1. □但是它却拥有数组的一些特性,比如说length,比如可以通过index索引来访问;
  2. □但是它却没有数组的一些方法,比如forEach、map等;

arguments常用方法

获取长度的方法.length

通过索引值获取对应数据

通过callee获取arguments所在函数

将arguments转为数组方式

数组调用slice再使用call绑定argument。可实现将argument转为数组。之所以需要这样是因为slice数组中有这个方法,但是argument没有

slice的实现

slice会对数组进行截取,返回一个新的数组。参数有两个,一个为截取起始的下标,而另一个为结尾。确定的输入会产生确定的输出且不会改变原来的数组内容。

1.竟然有两个参数那么就在参数上设定两个,一个start,一个end

2.因为需要处理的数组就是调用slice方法的数组,而根据this的指向可得,创建一个变量arr,接收this,此时this就是调用该函数的数组,也就是需要处理的函数

3.判断截取的start和emd的值是不是null的,如果是的需要将值置为0和数组长,这样一来就相当于不需要截取。如果不为null,就仍然为原来的值

4.定义一个新的数组变量newArray,作为新的数组,接收截取后的数组,最终返回出去

5.以end为边界值,将arr数组中下标为start-end的值通过push放入新建的newArry数组中

6.返回新的数组

注:想要创建得数组可以调用自己写的slice方法,就需要给数组对象Array的prototype中添加自定义的函数。

form方法,可传入一个可迭代的数据或者类数组,最终返回一个新的数组。所以也可以调用该方法实习argument转变成数组

箭头函数没有argument,所以会从上级去找argument。浏览器全局是没有argument,但是node中的全局是会有。所以当箭头函数需要传入多个参数,可以使用...args来接收

理解JavaScript纯函数

纯函数的识别

以下都不是纯函数

函数foo()更改了外部变量name的值,所以不是

有可观察的副作用点击事件,所以不是

副作用的理解

纯函数的案例

这两都不是纯函数

第一个更改了外部name的值所以不是

第二个更改了对象中属性age的值,所以不是

这个是

因为没有更改info原本的内容,返回的是新对象

纯函数的优势


原文地址:https://blog.csdn.net/qq_56798493/article/details/144240567

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!