console.log(+'3.14'); // => 3.14 console.log(typeof +'3.14') // => number const sleep = (milliseconds) => { return new Promise((resolve, reject) => { setTimeout(() => resolve(), milliseconds); }); } // 当然这里可以考虑使用 console.time 来测试 ! async function main() { const start = +new Date(); await sleep(3000); const end = +new Date(); console.log(`执行了${end - start}`); // 执行了 3002 }();
使用科学计数法表示大数字
const str1 = 'hello'; const str2 = ' world' console.time('测试 + 拼接字符串'); for (let i = 0; i < 200000000; i++) { const joinedStr = str1 + str2; } console.timeEnd('测试 + 拼接字符串'); console.time('测试模板字符串拼接字符串'); // 使用科学计数法比打 8 个 0 方便不少 for (let i = 0; i < 2E8; i++) { const joinedStr =`${str1}${str2}`; } console.timeEnd('测试模板字符串拼接字符串') /* => 测试 + 拼接字符串: 3238.037ms 测试模板字符串拼接字符串: 3680.225ms */
交换变量值
直接利用解构赋值
let a = 666; let b = 999; [a, b] = [b, a]; console.log({ a, b }); // => { a: 999, b: 666 }
获取随机字符串
截取下标 2 开始后的字符串是因为不需要 Math.random() 返回的小数构成的字符串的 0. 这两个字符。使用 36 进制可以制造字符种类更多些的随机字符串
console.log(Math.random().toString(16).substring(2)); // 13位 => 45d9d0bb10b31 console.log(Math.random().toString(36).substring(2)); // 11位 => zwcx1yewjvj
扁平化数组
ES 2019 新增了 Array.prototype.flat,目前 chrome 最新正式版 73.0.3683.103 已经支持了, node 最新的 LTS 10.15.3 还不支持, node 最新开发版 11.13.0 是支持的。这里贴一个在掘金一个兄弟面经里面看到的比较 hack 的方法,这里要注意根据情况做类型转换。
const array = [1, [2, [3, 4], 5], 6, 7]; console.log(array.toString().split(',').map(ele => Number.parseInt(ele))); // => [ 1, 2, 3, 4, 5, 6, 7 ]
最近面试腾讯,阿里前端实习岗真的是一言难尽,后面打算整篇文章聊聊我最近的面试经历。