首页 理论教育 理解JavaScript闭包语法

理解JavaScript闭包语法

时间:2023-06-23 理论教育 版权反馈
【摘要】:现在我们可以为一个数据做一个简单的排序任务,里面存储的是数字,示例如下:动手写6.2.1 UserClosure控制台输出如下:控制台输出如下:这里array.sorted之后就是一个闭包的声明。示例如下:动手写6.2.2 UseFunctionAsClosure一开始的数组是一个无序的数组,sorted()方法接受一个闭包作为参数,用来判断两个元素的大小关系。

理解JavaScript闭包语法

对已有数据进行排序是一件常见的事,比如按身高给小朋友排序,按年龄给大人们排序,或者以名字给学生们排序等等。在排序的时候,总是需要一个简单的方法来描述两者之间的关系,大于、小于或是等于。比如在用名字排序时,以首字母作为排序的依据,如果相等则再看下一位,以此类推。现在我们可以为一个数据做一个简单的排序任务,里面存储的是数字,示例如下:

动手写6.2.1 UserClosure

控制台输出如下:

控制台输出如下:

这里array.sorted之后就是一个闭包的声明。一般闭包声明如下:

这里array.sorted之后就是一个闭包的声明。一般闭包声明如下:

一开始的数组是一个无序的数组,sorted()方法接受一个闭包作为参数,用来判断两个元素的大小关系。闭包中接受两个参数,类型是数组中的元素类型,分别代表了排序时的两个元素,而闭包的返回是一个布尔值,表示第一个参数是否小于第二个参数。这里是整数,判断起来比较容易,如果数组中的元素是字符串,就可能需要读者自己实现判断字符串大小的方法(当然Swift本身提供了一个简单的字符串大小的判断方法,但未必适合真实的使用场景)。往外延伸,如果数组中的元素是其他自定义的类型,读者可以自己实现两个自定义类型的比较。此外,我们还可以将判断大小的逻辑取反,这样就可以做到降序排序了。

前文我们在介绍闭包的时候说过,函数也是一种闭包,所以读者可以将函数当作闭包、作为参数传入。示例如下:

动手写6.2.2 UseFunctionAsClosure(www.xing528.com)

一开始的数组是一个无序的数组,sorted()方法接受一个闭包作为参数,用来判断两个元素的大小关系。闭包中接受两个参数,类型是数组中的元素类型,分别代表了排序时的两个元素,而闭包的返回是一个布尔值,表示第一个参数是否小于第二个参数。这里是整数,判断起来比较容易,如果数组中的元素是字符串,就可能需要读者自己实现判断字符串大小的方法(当然Swift本身提供了一个简单的字符串大小的判断方法,但未必适合真实的使用场景)。往外延伸,如果数组中的元素是其他自定义的类型,读者可以自己实现两个自定义类型的比较。此外,我们还可以将判断大小的逻辑取反,这样就可以做到降序排序了。

前文我们在介绍闭包的时候说过,函数也是一种闭包,所以读者可以将函数当作闭包、作为参数传入。示例如下:

动手写6.2.2 UseFunctionAsClosure

控制台输出入如下:

控制台输出入如下:

本例中创建了一个sortFunction()方法,其函数类型和闭包的类型是一致的:(Int, Int) -> Bool,即两个Int类型的传入参数和一个Bool类型的返回值。然后再将sortFunction传入到sorted中作为排序的闭包,最后得到与之前一样的结果。

本例中创建了一个sortFunction()方法,其函数类型和闭包的类型是一致的:(Int, Int) -> Bool,即两个Int类型的传入参数和一个Bool类型的返回值。然后再将sortFunction传入到sorted中作为排序的闭包,最后得到与之前一样的结果。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈