博客列表 >函数参数与返回值、模板字面量与模板函数、闭包与纯函数

函数参数与返回值、模板字面量与模板函数、闭包与纯函数

三九三伏
三九三伏原创
2022年07月22日 16:00:00334浏览

一、函数参数与返回值

1. 参数

1.参数不足时给个默认值。
2.参数过多时会被丢弃。可以用“…”接收过多的参数,也可以用“…”展开接收的参数。

  1. ...
  2. // 1.参数不足,赋默认值。
  3. function f(param='默认参数'){
  4. return 'f函数参数是:'+param;
  5. }
  6. console.log(f());
  7. // 2. 参数过多,多余的会被忽略,用...rest可接收(数组形式)。
  8. function fn(param, ...n_param){
  9. return 'fn函数第一个参数:'+ param +'\nfn函数后续参数:' + n_param;
  10. }
  11. console.log(fn('参数1','参数2','参数3','参数4'));
  12. //3.接收数组参数并展开
  13. const arr = ['成员1','成员2','成员3'];
  14. console.log('展开数组结果:', ...arr);
  15. // 应用在箭头函数的求和上
  16. let sum = (...arr) => arr.reduce((a, c) => a + c);
  17. console.log('箭头函数求和结果:', sum(10,20,30,40,50,60));
  18. ...

2. 返回值

函数返回通常是单值,如果想返回多值,可以使用数组和对象。

  1. ...
  2. // 返回数组
  3. let f = ()=> [1,2,3];
  4. console.log(f());
  5. //返回对象,省略return的写法需要在对象外层加括号,去掉分号。
  6. f = () => ({
  7. a:1,
  8. b:2,
  9. get:function(){
  10. return 'ok';
  11. },
  12. }
  13. )
  14. console.log(f());
  15. ...

属性和方法的简化
1.对象属性,如果外部变量和内部同名,自动用外部同名变量进行初始化。
2.对象方法,可以将“:function”删除,但注意不要用箭头函数来简化。

  1. ...
  2. let name='李二';
  3. let user = {
  4. name,
  5. email:'mail@mail.com',
  6. getUserInfo(){
  7. return this.name + ':' + this.email;
  8. },
  9. };
  10. console.log(user.name);
  11. console.log(user.email);
  12. console.log(user.getUserInfo());
  13. ...

二、模板字面量与模板函数的声明,参数特点

1.模板字面量:可以用插值表示的字符串。

  1. ...
  2. let username = '小明';
  3. // 模板字面量要用反引号,变量用大括号括起来,外加$符号。
  4. console.log(`用户名是:${username}`);
  5. ...

2.模板函数:使用模板字面量当参数的函数

模板函数声明与普通函数没有区别,参数特点如下:
参数1:必须是当前模板字面量参数中的字符串字面量组成的数组
参数2:必须是一个或多个模板字面量中插值列表

  1. ...
  2. function total(string, ...args){
  3. console.log(string);
  4. console.log(args);
  5. }
  6. let name='手机';
  7. let num= 10;
  8. let price =500;
  9. total`名称:${name}, 数量:${num}, 单价:${price}`;
  10. ...

三 闭包的形成条件与访问方法,纯函数的特点

1. 闭包形成条件

父子函数关系
子函数引用父函数中的变量

2. 闭包的访问方法

  1. ...
  2. fn = function(a){
  3. let f = function(b){
  4. return a + b;
  5. };
  6. return f;
  7. }
  8. let f1 = fn(10);
  9. console.log(f1);
  10. console.log(typeof f1);
  11. console.log(f1(20));
  12. fn = function(a){
  13. return function(b){
  14. return function(c){
  15. return a + b + c;
  16. }
  17. }
  18. }
  19. console.log(fn(1)(2)(3));
  20. // 使用简化闭包
  21. fn = a => b=> c=> a + b + c;
  22. console.log(fn(1)(2)(3));
  23. ...


闭包的子函数就像灵魂,父函数是躯体,被调用就像灵魂出窍,灵魂出窍肉体必须保护好,不然灵魂就回不来了。

纯函数的特点

不依赖与外部变量,具有很好的移植性。代码可以放在任何位置,和上下文无关,不涉及线程切换。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议