锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. ES6语法笔记

ES6语法笔记

0
  • 软件开发
  • 发布于 2024-09-26
  • 0 次阅读
黄健
黄健

在ES6(ECMAScript 2015)中,… 是所谓的展开运算符(spread operator)或剩余运算符(rest operator),它有几个用途。
1.展开运算符(Spread Operator):
当你看到…在函数调用、数组字面量或对象字面量前时,它用作展开运算符。
数组:用于将一个数组的元素展开到另一个数组中,或者用于函数调用时传递数组的元素作为单独的参数。

const arr1 = [1, 2, 3];  
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]   
function myFunction(a, b, c) {

  console.log(a, b, c);  
  const args = [1, 2, 3];  
myFunction(...args); // 输出: 1 2 3
}  

对象:用于将一个对象的所有可枚举属性复制到另一个对象中。

const obj1 = {
    a: 1, b: 2 };  
const obj2 = {
    ...obj1, c: 3 }; // { a: 1, b: 2, c: 3 }

2.剩余运算符(Rest Operator):
在函数参数或解构赋值中,…用作剩余运算符,用于收集一个函数的不定数量的参数到一个数组中,或者在解构赋值时收集剩余的属性到一个对象中。
函数参数:用于收集一个函数的不定数量的参数到一个数组中。

function myFunction(...args) {

  console.log(args); // 数组形式,包含所有参数  
}  
myFunction(1, 2, 3); // 输出: [1, 2, 3]

解构赋值:用于在解构数组或对象时收集剩余的元素或属性。

const [first, ...rest] = [1, 2, 3, 4]; // first: 1, rest: [2, 3, 4]  
const {
    a, ...others } = {
    a: 1, b: 2, c: 3 }; // a: 1, others: { b: 2, c: 3 }

通过结合这些功能,ES6中的…运算符为处理数组和对象提供了更加灵活和简洁的方式。

箭头函数(Arrow Function)是ES6中引入的一种新的函数语法,它使用=>符号来定义函数。箭头函数提供了更简洁的语法,并且不绑定自己的this,arguments,super或new.target。这使得箭头函数在回调函数中特别有用,因为它可以更容易地处理this的上下文。
箭头函数的基本格式如下:

(parameters) => {
    functionBody }

无参数:

() => {
    console.log('Hello, World!'); }
单个参数:
javascript
x => {
    console.log(x); }

如果函数体只有一条语句,并且这条语句是一个返回语句,你还可以进一步简化箭头函数:

x => console.log(x)
多个参数:
javascript
(x, y) => {
    console.log(x, y); }

立即执行的函数表达式(IIFE):
虽然箭头函数不能用作构造函数(即不能使用new关键字),但它们可以用作立即执行的函数表达式(IIFE):

(() => {

    console.log('This will run immediately.');  
})();

返回值:
当箭头函数返回一个值时,可以省略花括号,并且如果返回的是一个对象字面量,需要用圆括号包围对象,以避免与函数体的花括号混淆:

// 返回数字  
x => x * x  
// 返回一个对象  
x => ({
    key: x })

使用this:
箭头函数不绑定自己的this,它会捕获其所在上下文的this值,作为自己的this值:

function OuterFunction() {

    this.value = 1;  
    this.innerFunction = () => {

        console.log(this.value); // 输出:1  
    };  
    this.innerFunction2 = function() {

        console.log(this.value); // 输出:1  
    };  
}  

const outer = new OuterFunction();  
outer.innerFunction(); // 使用箭头函数  
outer.innerFunction2(); // 使用传统函数

注意,箭头函数没有arguments对象。如果需要访问类似arguments的东西,可以使用剩余参数(rest parameters):

(...args) => {

    for (let arg of args) {

        console.log(arg);  
    }  
}

总之,箭头函数提供了一种更简洁、更直观的方式来编写函数,尤其是在处理回调函数和this上下文时。

原文链接: https://blog.csdn.net/qq_53568730/article/details/137564847

标签: #算法 139
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.