持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
ES6语法
模版字符串
用一个反引号表示``,里面可以放${}来嵌入动态的内容。
let nickName='jojo'
let age = 12
const name=`my name is ${nickName}`
console.log(`${nickName}${age}`)
函数默认参数
ES6以前编写函数是没有默认值的,在ES6我们可以给函数设置一个默认值,如果不传递这个参数,那么就默认取。
function foo(id = 20){
console.log(id)
}
foo(30) //打印30
foo() //打印20
展开运算符
语法使用三个点...
主要使用在函数调用时,数组构造时使用
可以将数组表达式或者字符串在语法层面展开。
可以将对象表达式按key-value的方式展开。
const food={name:'apple',color:'#fff'}
const obj={...food,weight:23}
function foo(a, b, c) {
console.info(a);
console.info(b);
console.info(c);
}
let args = ['参数1', '参数2', '参数3'];
hello(...args);
Symbol类型
Symbol类型用来生成一个独一无二的值,比如一个对象,我们希望在其中添加一个新的属性和值,在不确定它内部原来有什么属性的时候,容易造成冲突,覆盖掉对应属性,所以这时候最好自定义一个Symbol类型字段,对其赋值。
const s = Symbol("name")
const info ={
name:"jojo",
[s]:"gogo"
}
Set数据结构
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用,简单来说 Set对象存储的数据元素不能重复,所以Set常用的一个功能就是数组去重。
常用方法
add(value) :添加某个元素,返回Set对象本身
delete(value) :从set中删除和这个值相等的元素,返回布尔类型
has(value) :判断set中是否存在某个元素,返回布尔类型
clear() :清空set中所有的元素,没有返回值
foreach(callback,[,args]) :通过forEach遍历set
const ms = new Set()
ms.add(20)
ms.add(30)
const arr = new Set([11,12,13,14,11])
console.log(arr)//Set(3) {12, 13, 14}
Map数据结构
key-value的数据结构
key的类型可以是任意基本数据类型、对象、函数。
常用方法
set(key,value) :在Map中添加key、value,返回整个Map对象。
get(key) :根据key获取Map中的value。
has(key) :判断是否存在某一个key,返回布尔类型
delete(key) :根据key删除一个键值对,返回布尔类型
clear():清空所有元素
foreach(callback,[,args]) :通过forEach遍历map
ES7语法
includes
判断一个数组是否包含一个指定的元素,如果包含 返回true,否则返回false
const arr=[2,3,4,5,6]
arr.includes(2)
指数运算符
ES7以前,计算数字的乘方需要通过Math.pow方法来完成,ES&可以用**计算得到
const result = 3 ** 3
console.log(result) // 9
ES8语法
Object.values
在ES8以前我们通过Object.keys获取一个对象所有的key。ES8中新增了Object.values来获取所有value的值。
const obj = {
name:"jojo",
age:22
}
console.log(Object.values(obj)) //['jojo',22]
Object.entries
可以获取到一个数组,数组中存放可枚举属性的键值对数组。
主要针对对象、数组、字符串进行操作。
const obj = {
name:"jojo",
age:22
}
console.log(Object.entries(obj)) //[['name','why'],['age',18]]
for(const entry of Object.entries(obj)){
const[key,value] = entry
console.log(key,value);
}
//如果是一个数组
console.log(Object.entries(["a","b","c"]))//[['0','a'],['1','b'],['2','c']]
//如果是一个字符串
console.log(Object.entries("test"))//[['0','t'],['1','e'],['2','s'],['3','t']]
String Padding
有些时候我们需要对某个字符串进行前后的填充,来实现某个格式化效果,Es8新增2个个字符串API方法 padStart 和padEnd来实现。
第一个参数表示让字符串变成的最大长度,如果不够则填充对应的字符
const message = "hello"
console.log('message: ', message.padStart(9,"0")); //0000hello
console.log('message: ', message.padEnd(12,"0"));//hello0000000
总结
主要列举了一些ES6到ES8新增的一些语法,让我们在项目时候能及时想起来用。