博客列表 >函数参数类型与返回值方法 模板字面量/函数 闭包函数与纯函数

函数参数类型与返回值方法 模板字面量/函数 闭包函数与纯函数

吴长清
吴长清原创
2022年08月01日 09:19:16822浏览

1.函数参数类型与返回值

1.1 参数类型

1.参数不足,设置参数的默认值
2.参数过多,使用...rest将多余参数压缩成数组,rest是标识符,不是方法属性
3.函数调用时,使用...rest将数组解压(展开)

1.2 返回值

1.单值返回
2.多值返回,将多个值封装到容器(数组Array或者对象Object)中返回

2.模板字面量与模板函数

2.1 模板字面量

如果一个字符串中,存在”占位符”, 则称为”模板字符串”
占位符: 插值/表达式/变量
插值之外的字符串: 字面量
使用``来包含

2.1 模板函数

模板函数与普通函数一样,只是在调用函数时,使用模板字面量作为参数
语法:function 函数名(参数1,参数2)
参数1: 必须是当前模板字面量参数中的字符串字面量组成的数组
参数2: 第二个参数必须是一个或多个模板字面量中插值列表

注意:参数1在组成数组是,会多一个元素,这个元素是为了防止函数调用时不传参,导致返回一个undefined

3.闭包函数与纯函数

3.1 闭包函数

闭包函数形成的必要条件
1.父子函数,<script></script>整个作用域是一个函数,类似主函数main
2.子函数中调用父函数的变量

优点:
1.可以访问到函数内部的局部变量
2.可以避免全局变量的污染
3.这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除
缺点:
会增大内存使用量,滥用闭包会影响性能,导致内存泄漏等问题

3.2 纯函数

特点:不直接引用父函数的变量,以传参的方式使用

4.所有代码

  1. // 1. 函数参数类型与返回值方法
  2. // 2. 实例演示模板字面量与模板函数的声明,参数特点
  3. // 3. 实例演示闭包的形成条件与访问方法,并明白纯函数的特点
  4. // 1.参数不足 设置参数为默认值
  5. let fn = (name = "张三 默认值") => console.log(name);
  6. // 调用时不传参,就会打印参数name的默认值
  7. fn();
  8. // 2.参数过多,使用`...rest`将多余参数压缩成数组
  9. let fc = (value, ...arr) => console.log(value, arr);
  10. fc("第一个参数", "多余参数1", "多余参数2", "多余参数3");
  11. // 3.函数调用时,使用`...rest`将数组解压(展开)
  12. let fb = (...users) => users;
  13. const arr = ["德玛西亚", "诺克萨斯", "艾欧尼亚"];
  14. // 将数组展开
  15. console.log(...arr);
  16. // 调用时展开 函数中又压缩 最终返回的还是数组
  17. console.log(fb(...arr));
  18. // 1.单值返回
  19. let sum = (a, b) => a + b;
  20. // 调用时返回a+b的值 返回的是单值
  21. console.log("求和:" + sum(10, 20));
  22. // 2.多值返回 封装
  23. // 2.1返回数组Array
  24. let retArray = () => {
  25. return ["沙漠死神", "无极剑圣", "虚空之女", "疾风剑豪", "影流之主"];
  26. };
  27. console.log("返回一个数组:");
  28. console.log(retArray());
  29. // 2.2 返回对象Object
  30. let retObject = () => {
  31. return {
  32. name: "波比",
  33. addres: "班德尔城",
  34. sex: "女",
  35. age: 18,
  36. };
  37. };
  38. console.log("返回一个对象:");
  39. console.log(retObject());
  40. // 模板字面量
  41. let addr ='艾欧尼亚';
  42. let username ='艾瑞利亚';
  43. // 使用模板字面量插入一个变量
  44. console.log(`我住在${addr},我叫${username}`)
  45. // 使用模板字面里插入一个表达式
  46. let age =20;
  47. console.log(`我又18岁吗?--> ${age>18?'你有':'你没有'}`)
  48. //模板函数
  49. function total(strings, ...args) {
  50. console.log("我将模板函数传的所有字面量封装了起来:");
  51. console.log(strings);
  52. console.log("==================================");
  53. console.log("我将模板函数传的所有插值封装了起来:");
  54. console.log(args);
  55. }
  56. let name = "手机";
  57. let num = 10;
  58. let price = 500;
  59. total`名称: ${name}, 数量:${num},单价:${price}`;
  60. // 使用闭包函数求和
  61. fc = function (a) {
  62. return function fc2(b) {
  63. return function fc3(c) {
  64. return a + b + c;
  65. };
  66. };
  67. };
  68. // 用箭头函数简化 打印结果一样
  69. fn = (a) => (b) => (c) => a + b + c;
  70. console.log("======闭包函数======");
  71. console.log(fc(10)(20)(30));
  72. console.log("====箭头函数简化====");
  73. console.log(fn(10)(20)(30));
  74. //纯函数
  75. //折扣率
  76. let dis = 0.5;
  77. function getPrice(price, dis) {
  78. // 最终价格 = 原价 * 折扣率
  79. return price * dis;
  80. }
  81. console.log(getPrice(100, dis));
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议