字符串模板基本使用
在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天,点击查看活动详情