JavaScript高阶函数——函数当参数、返回值、其他成员

流楚丶格念 2021-07-20 03:52:46
javascript


函数的其它成员

  • arguments
    • 实参集合
  • caller
    • 函数的调用者
  • length
    • 形参的个数
  • name
    • 函数的名称
function fn(x, y, z) {
console.log(fn.length) // => 形参的个数
console.log(arguments) // 伪数组实参参数集合
console.log(arguments.callee === fn) // 函数本身
console.log(fn.caller) // 函数的调用者
console.log(fn.name) // => 函数的名字
}
function f() {
fn(10, 20, 30)
}
f()

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

高阶函数

作为参数

function eat (callback) {
setTimeout(function () {
console.log('吃完了')
callback()
}, 1000)
}
eat(function () {
console.log('去唱歌')
})

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

作为参数案例:

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script>
function f1(fn) {
setInterval(function () {
console.log("定时器开始");
fn();
console.log("定时器结束");
},2000);
}
f1(function () {
console.log("好困啊,好累啊,就是想睡觉");
});
</script>
</head>
<body>
</body>
</html>

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

作为返回值

function genFun (type) {
return function (obj) {
return Object.prototype.toString.call(obj) === type
}
}
var isArray = genFun('[object Array]')
var isObject = genFun('[object Object]')
console.log(isArray([])) // => true
console.log(isArray({})) // => true

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

作为返回值案例:

在这里插入图片描述

在这里插入代码片<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script>
//排序,每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序
//三部电影,电影有名字,大小,上映时间
function File(name, size, time) {
this.name = name;//电影名字
this.size = size;//电影大小
this.time = time;//电影的上映时间
}
var f1 = new File("a", "400M", "1997-12-12");
var f2 = new File("c", "200M", "2017-12-12");
var f3 = new File("b", "800M", "2010-12-12");
var arr = [f1, f2, f3];
function fn(attr) {
//函数作为返回值
return function getSort(obj1, obj2) {
if (obj1[attr] > obj2[attr]) {
return 1;
} else if (obj1[attr] == obj2[attr]) {
return 0;
} else {
return -1;
}
}
}
var ff = fn("name");
//函数作为参数
arr.sort(ff);
for (var i = 0; i < arr.length; i++) {
console.log(arr[i].name + "====>" + arr[i].size + "===>" + arr[i].time);
}
</script>
</head>
<body>
</body>
</html>

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
版权声明
本文为[流楚丶格念]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15265965/2891970

  1. 【django轻量级框架】Django项目导入css,js,images等静态文件
  2. 2.4.5全局样式与局部样式和2.4.6 CSS变量-页面样式与布局【uni-app从入门到精通在线教程(黄菊华-跨平台开发系列教程)】
  3. 微信小程序界面设计小程序中的WXSS(css)选择器课程-::first-line 伪元素
  4. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:empty 伪类
  5. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:checked 伪类(不支持)
  6. 微信小程序界面设计小程序中的WXSS(css)选择器课程-子元素选择器
  7. 微信小程序界面设计小程序中的WXSS(css)选择器课程-相邻兄弟选择器
  8. 微信小程序界面设计小程序中的WXSS(css)选择器课程-后代选择器
  9. 微信小程序界面设计小程序中的WXSS(css)选择器课程-属性选择器
  10. 微信小程序界面设计小程序中CSS3样式精通课程-框大小box-sizing
  11. 微信小程序界面设计小程序中CSS3样式精通课程-多列-Columns列的宽度和列数
  12. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:last-of-type 伪类
  13. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:only-child 伪类
  14. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:only-of-type 伪类
  15. 微信小程序界面设计小程序中的WXSS(css)选择器课程-::after伪元素
  16. 微信小程序界面设计小程序中的WXSS(css)选择器课程-::before伪元素
  17. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:nth-last-of-type()伪类
  18. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:nth-of-type() 伪类
  19. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:last-child 伪类
  20. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:disabled | :enabled 伪类
  21. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:first-child 伪类
  22. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:first-of-type 伪类
  23. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:focus 伪类
  24. 微信小程序界面设计小程序中的WXSS(css)选择器课程-派生选择器
  25. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:nth-child() 伪类
  26. 微信小程序界面设计小程序中的WXSS(css)选择器课程-选择器的分组
  27. HTML基础-简介
  28. ASP实战之HTML入门-黄菊华-专题视频课程
  29. 微信小程序WxParse解析富文本(html)代码在线视频教程
  30. HTML语言基础.上
  31. HTML语言基础.下
  32. HTML!
  33. 【网页前端设计Front end】HTML语言基础.上(看不懂你来打我)
  34. 【网页前端设计Front end】HTML语言基础.下(看不懂你来打我)
  35. 【django轻量级框架】HTML上传文件拦截到本地
  36. HTML5基础知识实战演练教程-黄菊华-专题视频课程
  37. 基于WEB的HTML5购物网站、H5电商购物平台网上商城网站毕业设计(1)商城首页
  38. 基于WEB的HTML5购物网站、H5电商购物平台网上商城网站毕业设计(2)商城分类
  39. Introduction of modern JavaScript chart library apexcharts.js | software
  40. 微信小程序框架weui的基础使用
  41. 一文入魂!彻底巩固你的Nginx知识体系!
  42. Nginx是什么?有哪些核心技术?
  43. Nginx配置如何一键生成
  44. 就这一次把网路的几种IO模型以及Nginx基本原理彻底搞清楚
  45. 优质高效,阿里性能怪兽宝典(Redis+Nginx)限时开源,手慢无!
  46. Nginx的配置文件nginx.conf配置解释
  47. 安装的nginx 地址重写
  48. nginx防盗链
  49. nginx动静分离
  50. nginx优化
  51. Nginx虚拟主机
  52. Nginx 反向代理
  53. IDEA实现热部署前端界面(Tomcat、IDEA)
  54. JavaScript中call与apply的区别
  55. JavaScript代码无分号问题
  56. 在Chrome浏览器中禁用JavaScript
  57. JavaScript为内置对象添加原型方法
  58. JavaScript原型数据共享与方法共享探究
  59. JavaScript把局部变量变成全局变量
  60. JavaScript函数自调用