学习ES6 知识补充(二)

84 阅读3分钟

字符串模板基本使用

在ES6之前,如果我们想要将字符串和一些动态的变量(标识符)拼接到一起,是非常麻烦

var name = "sabo"
var age = 14

console.log("my name is" + name + ", age is" + age)

ES6允许我们使用字符串模板来嵌入JS的变量或者表达式来进行拼接:

首先,我们要使用 `` 符号来编写字符串,称之为模板字符串,

其次,在模板字符串,我们可以通过${expression}来嵌入动态的内容

console.log(`my name is ${name}, age is ${age}`)

函数的默认参数

在ES6之前,我们编写的函数参数是没有默认值的,所以我们在编写函数时,如果有下面的需求:

  • 传入了参数,那么使用传入的参数;
  • 没有传入参数,那么使用一个默认值;
function foo(m,n){
    m = m || "mmm"
    n = n || "nnn"
}

在ES6中可以给函数提供默认的值

function foo(m = "mm",n = "nn"){
    console.log(m,n)
}

对于对象参数和默认值以及解构

function foo({m,n}={m="mm",n="nn"}){
    console.log(m,n)
}

如果函数中既存在需要设置默认值的参数与正常参数,需要将有默认值的参数放到最后

function foo(a,b,c=3000){
    console.log(a,b,c)
}

函数的剩余参数

ES6中引用了rest parameter,可以将不定数量的参数放入到一个数组中(必须放到最后一位)

如果最后一个参数是 ... 为前缀的,那么它会将剩余的参数放到该参数中,并且作为一个数组;

function foo(m,n,...abc){
    console.log(m,n,abc)
}

函数的展开语法(Spread syntax)

可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;

还可以在构造字面量对象时, 将对象表达式按key-value的方式展开;

调用函数时的使用

const name = ["a","b","c"]
function foo(a,b,c){
    console.log(a,b,c)
}
foo(...name)

2.构造数组时

const newName = [...name]

3.构建对象字面量时ES2018(ES9)

const boy = {
    name: "sabo",
    age:14
}
const newBoy = {
    ...boy,
    job:"RevolutionaryArmy"
} 

注意:展开运算符其实是一种浅拷贝

Symbol的基本使用

Symbol是什么呢?

Symbol是ES6中新增的一个基本数据类型,翻译为符号 标志。

在ES6之前,对象的属性名都是字符串形式,那么很容易造成属性名的冲突;

原来有一个对象,我们希望在其中添加一个新的属性和值,

但是我们在不确定它原来内部有什么内容的情况下,很容易造成冲突,从而覆盖掉它内部的某个属性;

const boy = {
    name: "sabo",
    age:14
}
boy.name = "xiaoming"

这里就会发生属性冲突,从而覆盖掉它内部的某个属性;

Symbol的使用

const name = Symbol()
const boy = {
    [name]: "sabo",
    age:14
}
boy.name = "xiaoming"

在ES6中,对象的属性名可以使用字符串,也可以使用Symbol值;

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情