ES6 函数传参

作者: F_wind | 来源:发表于2021-01-18 10:38 被阅读0次

《深入理解ES6》阅读随笔

在 ES5 中,函数的形参使用是很灵活的,没有数量限制的,可以任意传入多于或者少于函数定义时的参数。如果传多了,那么可以在函数体内通过 arguments 数组来获取;如果传少了,需要在函数体内进行自定义约束,避免出现异常调用的情况。下面是一个简单的说明案例:

// 自定义函数
function readme(name) {
  let result = "I am ";
  if (name !== undefined) {
    // 正常情况
  } else {
    // 形参少的情况
    name = "default";
  }
  result += name;
  // 形参多的情况
  if (arguments.length > 1) {
    for (let i = 1; i < arguments.length; i++) {
      result += arguments[i] + " ";
    }
  }
  console.log(result);
}
// 正常情况
readme("bug"); // 输出:I am bug
// 形参多的情况,new bug 参数可以在函数体内通过 arguments[1] 获取
readme("bug", "new bug"); // 输出:I am bug
// // 形参少的情况,需要判断 name 是否为 undefined,如果是,给一个默认值,如果不是,正常输出
readme(); // 输出:I am default

事实上,上面两种方案虽然解决了问题,但是不够安全,也不够简洁。在 ES6 中,有了更好的解决方案。在形参少的的情况下,可以通过在形参中设置默认参数的方式来处理,更加简洁易懂。在形参多的情况下,可以使用新的不定参数符号 … 来代表多出来的参数。下面是一个简单的说明案例:

// 自定义函数
function readme(name = "default", ...list) {
  let result = "I am ";
  result += name;
  // 形参多的情况
  for (let i = 0; i < list.length; i++) {
    result += list[i] + " ";
  }
  console.log(result);
}
// 正常情况
readme("bug"); // 输出:I am bug
// 形参多的情况
readme("bug", "new bug"); // 输出:I am bug
// 形参少的情况
readme(); // 输出:I am default

另外,不定参数符号 … 还可以用于对象字面量的展开,就像下面这个例子,如果改为使用 … 会方便很多:

// 数学内建函数中获取最值,默认只支持元组数据,如果是两个还好
let result = 0;
result = Math.max(1, 2);
console.log(result); // 输出 2
// 如果数据一多, 比如要处理数组数组
const moreData = [1, 2, 3, 4, 5];
// 那么就需要进行一些干预手段,才能获取
result = Math.max.apply(Math, moreData);
console.log(result); // 输出 5
// 使用 ...
result = Math.max(...moreData);
console.log(result); // 输出 5

很显然,虽然借助 apply 的方式也可以实现数组最值的获取,但是使用 … 以后代码结构更清晰易懂。另外,在 ES6 中,绝大多数之前使用 apply 实现的功能,几乎都可以通过 … 的方式来优化实现(ES6 中依然保留 apply 的用法)。

相关文章

  • ES6 函数传参

    《深入理解ES6》阅读随笔 在 ES5 中,函数的形参使用是很灵活的,没有数量限制的,可以任意传入多于或者少于函数...

  • react学习笔记-基础知识

    props 在函数式组件里面, 使用传参的形式拿到props 在es6 class语法里面, 使用this.pr...

  • 函数

    简单函数格式 定义 调用函数 传参函数格式: 传参数 定义 注意 重点 实例(简单) 实例(传参) 实例函数(调用...

  • 19-2-25(解构赋值,拖拽上传,上传)

    (1.首先了解ES6新增了在函数传参时初始化参数的操作。ES6 允许为函数的参数设置默认值,即直接写在参数定义的后...

  • JavaScript学习系列(一)--函数参数以及属性操作

    摘要 1.函数传参。2.两种操作属性的方法。3.style和className 一、函数传参 改变背景颜色函数传参...

  • es6函数默认传参

    1.先看es5 打印出的值是1,如果不传a 打印的结果就是 ''(空) , es6说白了我个人感觉就是少写了那个比...

  • 匿名函数、函数传参

    函数传参

  • four.day_shell监控

    函数传参

  • 函数传参

    函数传参 改变背景颜色-函数传参:参数就是站位符什么时候用传参——函数里定不下来的东西 改变div的任意样式-操纵...

  • 今日小结

    指针传参 在函数间指针变量做参传值,只传地址,不附带其他信息。故以数组名为指针变量被函数调用传参后,在调用函数内s...

网友评论

    本文标题:ES6 函数传参

    本文链接:https://www.haomeiwen.com/subject/xcitzktx.html