模块化
可以从相应的文件中导入或导出相应的方法。
//导出 main.js
export let name ="lisi";
export function foo(arg){
return arg;
}
// 导入
import {name,foo} from 'main';
解构
从数组中取值
const arr =[1,2,3,4];
let [a,,b] = arr;//逗号分隔为一项
console.log(a,b);//取出 1,3
从对象中取值
const arr= {a:1,b:2,c:3};
let {a,b,c} = arr; //将对象的key和变量名称一一对应就可以了
console.log(a,b)
//冒号的方式修改变量名称
let {a:k,b:l,c}=arr
排除一些对象属性
const params ={
name:"lisi",
age:18,
type:1
}
let {type,...other} = params
console.log(other);//就是排除type 后的属性 { age: 18, name: "lisi" }
支持直接在参数上赋值
function foo(age=18,type=1){
}
对象属性的简写
const name ="lisi",age=18,type=1;
const userInfo ={
name: name,
age:age,
type:type
}
//变为
const userInfo ={
name,
age,
type
}
支持async、await
支持includes
指数操作符
2**10 // 1024
Object.keys
const obj ={a:1,b:2,c:3};
const keys =Object.kesy(obj);// [a,b,c]
Object.values
const obj ={a:1,b:2,c:3};
const keys =Object.values(obj);// [1,2,3]
Object.entries
const obj ={a:1,b:2,c:3};
Object.entries(obj);// [[a,1],[b,2],[c,3]]
for(let [key,value] of Object.entries(obj)){
console.log(`key: ${key} value: ${value}`)
}
// "key: a value: 1"
// "key: b value: 2"
// "key: c value: 3"
null 传导运算符 ?.
左侧的值不为null 和undefined的时候,就会取得右侧的值
const info = message ?.body?.data?.info
null 判断运算符 ??
左侧的值不为null 和undefined的时候,就会取得左侧的值,否则会返回右侧的值
const status = response.data ?? '400';
模板字符串
const name ="李四";
const age =18;
const result =`${name}${age>=18? '成年了':'未成年'}`
console.log(result);//李四成年了