new Date().toGMTString() // Mon, 11 Nov 2019 08:44:47 GMT
new Date().toISOString() // 2019-11-11T08:44:55.976Z
new Date().toJSON() // 2019-11-11T08:47:45.854Z
new Date().toTimeString() // 16:45:05 GMT+0800 (中国标准时间)
new Date().toString() // Mon Nov 11 2019 16:45:14 GMT+0800 (中国标准时间)
new Date() // Mon Nov 11 2019 16:47:16 GMT+0800 (中国标准时间)
new Date().toUTCString() // Mon, 11 Nov 2019 08:45:26 GMT
解构赋值
对于一维对象,可以进行变量改名,和设置默认值
const person = { name: 'yy', age: 22 }
const { name: n, age = 18, sex = 'male' } = person
console.log(n, age, sex) // yy 22 male
const arr = [1,2,3]
for (const i in arr) console.log(i) // ok
for (const i of arr) console.log(i) // ok
for (const i = 0; i < arr.length; i++) console.log(i) // error
for...in for...of可以理解为是函数, 每次迭代相当于调用一次函数,生成一个新的作用域,相当于定义了多个作用域中值不同的const i,没有重新赋值,而 for 循环只生成了一次作用域
不要使用toLocaleString
toLocaleString = toLocaleDateString + toLocaleTimeString 虽然好看,但是不可逆(从String还原成Date),还不如使用
解构赋值
对于一维对象,可以进行变量改名,和设置默认值
处理嵌套对象
参考: 深入理解ES6--5.解构:更方便的数据访问
reduce去重
本质:打标记
两个数组是否相等
如果是无序的怎么处理
goto 的替代品 label 标记
js 没有 goto 语句,标记只能和 break 或 continue 一起使用,最方便的就是用于跳出最外层循环
label 用于 continue
label 用于 break
关于时间口语化表达的纠结
在今天凌晨,说昨天23点59分,可以说是一天前吗?
为什么for...in和for...of可以用const但是for不行?
首先看看
var
,let
,const
三者的区别for...in for...of可以理解为是函数, 每次迭代相当于调用一次函数,生成一个新的作用域,相当于定义了多个作用域中值不同的const i,没有重新赋值,而 for 循环只生成了一次作用域
任何 async 函数都会返回一个 promise
何如优雅地处理 aysnc/await 的异常?
async/await + then(promise) + Go语言风格错误处理[err, data]
错误只要不 throw 那都好说 参考: async/await 优雅的错误处理方法 参考: 13篇文章,教你学会ES6知识点