ES6语法笔记

在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上下文时。

上一篇:Spark-Scala语言实战(10)


下一篇:微软云学习环境