代码如下:
[...Array(7).keys()].map(days => new Date(Date.now() + 86400000 * days));
演示解说:
这段代码的作用是返回未来七天的时间(包括现在)(utc时间https://baike.baidu.com/item/%E5%8D%8F%E8%B0%83%E4%B8%96%E7%95%8C%E6%97%B6/787659?fromtitle=UTC&fromid=5899996&fr=aladdin)。
node.js演示:(源码:https://github.com/llh1187/funnytest/tree/master/test-js)
网上utc时间对比:
代码解说:
目前来说。所理解到的,
A=>B 是将B结果赋值给A(第二次修改:这样想是错误的)
86400000单位是毫秒 代表一天。
Date.now() 方法返回自1970年1月1日 00:00:00 UTC到当前时间的毫秒数。new Date(Date.now()) 为当前时间。
map 返回键值对
扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列(ECMAscript6语法 http://es6.ruanyifeng.com/#docs/array)
具体详细的理解,现在还没能理解到:cry:。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二次更新,经过segmentfault社区的解答(https://segmentfault.com/q/1010000019065728?_ea=10621036),再加上阅读MDN文档:
Map https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
自己终于了解到了这段代码的意思。
[...Array(7).keys()].map(days => new Date(Date.now() + 86400000 * days))
=>[...Array(7).keys()].map( days => {return new Date(Date.now() + 86400000 * days);})
=>[...Array(7).keys()].map( (days) => {return new Date(Date.now() + 86400000 * days));}
=>[...Array(7).keys()].map(function (days) {return new Date(Date.now() + 86400000 * days));}
[...Array(7)]=>键值为[0,1,2,3,4,5,6]的空数组。 keys() 为键值。