函数表达式
let sayHi = function() {
alert( “Hello” );
};
箭头函数
return 可以省略(是一个表达式) ,如果使用了话挂号 ,就一定要有return,
let sum = (a,b) => a +b
let sum = function(a,b)=>{return a+b ;}
如果只有一个参数,
let double = n => n *2
如果没有参数
let sayHi = ()=> alert(hello)
空值合并运算符
??
a ?? b 的结果是 a,除非 a 为 null/undefined,这时结果是 b。
可选链
?.user?.address?.street undefine 或者 nuill
替代方案
&&
- user.address && user.address.street && user.address.street.name
数组类型
arr.concat 创建一个新数组,其中包含来自于其他数组和其他项的值。
语法:
arr.concat(arg1, arg2…)
arr.slice 方法比 arr.splice 简单得多。
语法是:
arr.slice([start], [end])
Object.keys(obj) —— 返回一个包含该对象所有的键的数组。
Object.values(obj) —— 返回一个包含该对象所有的值的数组。
对象结构赋值
属性 options.title、options.width 和 options.height 值被赋给了对应的变量。
变量的顺序并不重要,下面这个代码也是等价的:
// 改变 let {…} 中元素的顺序
let {height, width, title} = { title: “Menu”, height: 200, width: 100 }
从对象中什么属性的值:赋值给哪个变量”。上面的例子中,属性 width 被赋值给了 w,属性 height 被赋值给了 h,属性 title 被赋值给了同名变量。
// { sourceProperty: targetVariable }
let {width: w, height: h, title} = options;
对于可能缺失的属性,我们可以使用 “=” 设置默认值,如下所示:
let {width = 100, height = 200, title} = options;
let {width: w = 100, height: h = 200, title} = options;
复杂对象
let options = {
size: {
width: 100,
height: 200
},
items: [“Cake”, “Donut”],
extra: true
};
// 为了清晰起见,解构赋值语句被写成多行的形式
let {
size: { // 把 size 赋值到这里
width,
height
},
items: [item1, item2], // 把 items 赋值到这里
title = “Menu” // 在对象中不存在(使用默认值)
} = options;
数组
pop/push, shift/unshift 方法