ES6知识点整理之函数数组参数的默认值及其解构应用示例

ES6知识点整理之函数数组参数的默认值及其解构应用示例

函数参数的默认值

在ES6之前,函数的参数如果没有传入值,则默认为undefined。

function func(a, b) {
  console.log(a, b);
}

func(1) //输出:1 undefined

在ES6中,函数的参数可以设置默认值,当没有传入该参数时,将使用设定的默认值。默认值可以是任何类型的值,包括函数调用、对象和数组等。

function func(a, b=2) {
  console.log(a, b);
}

func(1) //输出:1 2

如果一个参数的默认值是一个表达式,则每次函数被调用时,都会重新计算表达式的值。这意味着不能将它们放在循环或条件中。

function func(a, b=getB()) {
  console.log(a, b);
}

function getB() {
  return 2;
}

func(1) //输出:1 2

函数参数的解构赋值

在使用函数的参数时,我们通常会使用解构赋值的方法。ES6允许将对象和数组作为函数参数,同时使用解构赋值来提取参数的值。

对象参数的解构赋值

function func({a, b}) {
  console.log(a, b);
}

func({a:1, b:2}) //输出:1 2

当然我们可以给参数设置默认值:

function func({a=0, b=2}) {
  console.log(a, b);
}

func({a:1}) //输出:1 2

如果我们想把参数作为一个整体,而非解构它们,我们可以将它们包装在括号中:

function func({a, b} = {}) {
  console.log(a, b);
}

func() //输出:undefined undefined

数组参数的解构赋值

使用数组作为参数时,可以用解构赋值来提取参数的值。但是需要注意的是,数组的元素是按照顺序对应的,而对象的属性则是无序的。

function func([a, b]) {
  console.log(a, b);
}

func([1, 2]) //输出:1 2

同样,我们可以给数组参数设置默认值:

function func([a=0, b=2]) {
  console.log(a, b);
}

func([1]) //输出:1 2

如果我们不想提取所有的元素,可以使用圆括号来只提取部分元素:

function func([a, , b]) {
  console.log(a, b);
}

func([1, 2, 3]) //输出:1 3

如果传入的参数不是一个数组,将会在解构时抛出一个错误。

示例

例子1 - 计算圆的面积

我们可以使用默认参数将圆的半径设置为1:

function getAreaCircle(radius = 1) {
  return Math.PI * Math.pow(radius, 2);
}

console.log(getAreaCircle());    // 3.141592653589793
console.log(getAreaCircle(2));   // 12.566370614359172

例子2 - 交换变量的值

使用解构赋值来实现这个目前也很简单:

let a = 1, b = 2;

[b, a] = [a, b];

console.log(a, b);  // 2 1

这样可以让代码可读性更高。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ES6知识点整理之函数数组参数的默认值及其解构应用示例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • JavaScript中的伪数组用法及说明

    JavaScript中的伪数组用法及说明 在JavaScript中,伪数组是一个类数组对象,具有数组的索引和遍历方法,但是没有数组的基本方法,例如push、pop、slice等。下面我们将详细讲解伪数组的用法及说明。 伪数组的特点 伪数组拥有以下特点: 具有非负整数的索引,从0开始依次递增 长度length属性与其中包含的元素数量相等 常见的伪数组有类数组对…

    JavaScript 2023年5月27日
    00
  • JS散列表碰撞处理、开链法、HashTable散列示例

    JS散列表碰撞处理是指在散列表中插入元素时,如果发现插入位置已经有元素,就会出现碰撞的情况。碰撞处理的目标是保持散列表中没有重复的元素。下面将介绍两种JS散列表的碰撞处理方法:开链法和线性探测法。 开链法 开链法也被称为拉链法,是一种常用的碰撞处理技术。它的基本思想是将每个散列值的链表放置在散列表的对应位置上,如果插入时与该链表中的某个元素发生碰撞,就将新元…

    JavaScript 2023年5月28日
    00
  • javascript中的隐式调用

    当在JavaScript中调用某个函数时,如果函数的调用方式没有明确指定使用哪个对象作为函数的上下文对象,那么函数调用时就会默认使用全局对象作为上下文对象进行调用,同时该调用方式被称为“隐式调用”,也称为“默认绑定”。 例如以下代码: function foo() { console.log(this); } foo(); // 在全局作用域中调用 foo …

    JavaScript 2023年5月28日
    00
  • 一文让你彻底搞清楚javascript中的require、import与export

    一文让你彻底搞清楚JavaScript中的require、import与export 在当前的JavaScript标准中,有两种方式可以导入和导出模块:CommonJS 的 require() 和 module.exports,以及 ES6 的 import 和 export。 CommonJS 的 require() 和 module.exports 在 …

    JavaScript 2023年5月27日
    00
  • JS中注入eval, Function等系统函数截获动态代码

    注入eval、Function等系统函数可以使攻击者截获JS代码的执行过程,从而实现对网站的控制。以下是JS中注入eval、Function等系统函数的完整攻略: 针对eval的注入攻击 步骤1: 攻击者在代码中构造出可执行代码(即包含函数或变量)的字符串,然后通过eval这一系统函数来执行 eval("console.log(‘Hello, Wo…

    JavaScript 2023年5月27日
    00
  • JavaScript数组去重和扁平化函数介绍

    当涉及到JavaScript数组时,我们经常需要对元素进行去重和扁平化处理。在这篇攻略中,我们将介绍如何使用JavaScript编写去重和扁平化数组的函数。 JavaScript数组去重 方法一:使用ES6 Set ES6 Set是一组不重复的值的集合。它提供了一个很方便的方法来过滤掉数组中的重复元素。 以下是示例代码: const arr = [1, 1,…

    JavaScript 2023年5月27日
    00
  • JavaScript面向对象程序设计创建对象的方法分析

    JavaScript面向对象程序设计创建对象的方法分析 什么是对象? 对象是一种数据类型。它可以用来存储一组相关的数据,并且允许我们定义相关的方法来访问和操作这些数据。对象由多个属性组成,每个属性都有一个名称和对应的值。 如何创建对象? 在JavaScript中,有多种创建对象的方式。下面分别介绍这些方法。 1. 对象字面量 对象字面量是最常用的创建对象的方…

    JavaScript 2023年5月27日
    00
  • JavaScript Array 对象

    以下是关于JavaScript Array对象的完整攻略。 JavaScript Array对象 JavaScript Array对象是一种特殊的对象,用于存储一组有序的数据。数组中的每个元素都有一个唯一的索引可以通过索引访问数组中的元素。数组可以包含任何类型的数据,包括数字、字符串、对象等。 下面是一个创建和访问数组的示例: var arr = [1, 2…

    JavaScript 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部