美文网首页精通ES6
ES6笔记 - 函数的扩展

ES6笔记 - 函数的扩展

作者: 朗迹张伟 | 来源:发表于2016-06-23 19:13 被阅读59次

函数参数的默认值


ES6允许为函数的参数设置默认值,即直接写在参数定义的后面。

function log(x, y = 'World') { 
  console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

与解构赋值默认值结合使用


参数默认值可以与解构赋值的默认值,结合起来使用。

function foo({x, y = 5}) { 
  console.log(x, y);
}
foo({}) // undefined, 5
foo({x: 1}) // 1, 5
foo({x: 1, y: 2}) // 1, 2
foo() // TypeError: Cannot read property 'x' of undefined

函数的length属性


指定了默认值以后,函数的length
属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,length属性将失真。

(function (a) {}).length // 1
(function (a = 5) {}).length // 0
(function (a, b, c = 5) {}).length // 2

rest参数


ES6引入rest参数(形式为“...变量名”),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

function add(...values) { 
  let sum = 0; 
  for (var val of values) { 
    sum += val; 
  } 
  return sum;
}
add(2, 5, 3) // 10

//给一个组数字sort排序
// arguments变量的写法ES5
function sortNumbers() { 
  return Array.prototype.slice.call(arguments).sort();
}
// rest参数的写法ES6
const sortNumbers = (...numbers) => numbers.sort();

//下面是一个利用rest参数改写数组push方法的例子。
function push(array, ...items) { 
  items.forEach(function(item) { 
    array.push(item); 
    console.log(item); 
  });
}
var a = [];
push(a, 1, 2, 3)

//注意,rest参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
// 报错
function f(a, ...b, c) {  // ...}

相关文章

  • es6的数值,函数,字符串扩展

    一、es6的数值扩展 二、es6的函数扩展 代码效果:对象解构在函数中的应用 三、es6字符串扩展 常用方法 代码...

  • 【ES6 笔记】函数扩展

    上一篇文章主要整理了ES6函数的形参相关的内容,结合上篇文章的基础内容,本章再扩展一下函数的其他内容在原书中,本章...

  • ES6基础笔记二

    ES6 箭头函数、函数扩展 ES5: function add(a,b){return a+b;}console....

  • ES6扩展归纳

    ES6扩展归纳 介绍ES6相比与ES5在原有对象上的扩展,包括字符串、正则、数值、函数、数组、对象等扩展,本文是阮...

  • ES6&函数扩展

    ES6函数的扩展 1.函数默认值 定义:ES6允许为函数设定默认值,即直接写在参数定义的后面 示例function...

  • es6的this的指向性问题详解(接着上一篇文章)

    我们都知道在es6中函数的扩展多了箭头函数,那么箭头函数中的this如何指向呢? 下面我们来看一看: 其实es6的...

  • ES6函数扩展

    function扩展 ES6在原有ES5基础上对function的扩展 1.默认值 ES6 允许为函数的参数设置默...

  • kotlin 类的扩展函数

    类的扩展函数学习笔记###

  • ES6学习笔记_函数的扩展

    为参数设置默认值 在ES5中,是不能直接为参数设置默认值的,可以通过||的逻辑运算符来设置,但是有个问题,如果||...

  • ES6 学习笔记-函数的扩展

    参数默认值不是传值的,而是每次都重新计算默认值表达式的值。也就是说,参数默认值是惰性求值的。 使用参数默认值时,函...

网友评论

    本文标题:ES6笔记 - 函数的扩展

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