摘要:
let curring = (fn, ...args) => { return fn.length> args.length? (...arguments) => curring(fn, ...args, ...arguments): fn(...args) } let addSum = (a,b, 阅读全文
摘要:
// num为传入的值,n为保留的小数位 fomatFloat(num, n) { var f = parseFloat(num); if (isNaN(f)) { return false; } f = Math.round(num * 10 ** n) / 10 ** n; // n 幂 var 阅读全文
摘要:
1. 调用 ES6 中的 flat 方法 arr.flat(Infinity) 2. 递归 function flatten(arr) { let res = [] for (let i of arr) { Array.isArray(i) ? res = res.concat(flatten(i) 阅读全文
摘要:
const path = require('path') function resolve (dir) { return path.join(__dirname, dir) // return path.join(__dirname, '..', dir) } module.exports = { 阅读全文
摘要:
== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。 而 和 !== 只有在相同类型下,才会比较其值。 首先,== equality 等同, identity 恒等。 ==, 两边值类型不同的时候,要先进行类型转换,再比较。 ,不做类型转换,类型不同的一定不等。 下面分 阅读全文
摘要:
JS代码编译过程: 1.检查通篇的语法错误,若有错误则不编译执行. 2.预编译. 3.解释一行,执行一行. js预编译时会创建GO对象与AO对象 GO: global object 即 全局上下文, GO=window对象,GO即操作window,a为全局变量,console.log(a) = co 阅读全文
摘要:
// 解决异步回调地狱的方案: async + promise async function writeFile() { // 打开文件 const fd = await new Promise((resolve, reject) => { // 执行 打开文件 异步操作 fs.open('c.tx 阅读全文
摘要:
move(); function move() { // 动画最流畅,性能最好 window.requestAnimationFrame(function () { // 这个函数会在下一次重排重绘之前调用(将当前函数操作dom导致的重排重绘和下一次重排重绘合并成一次) // 执行动画 x++; b 阅读全文
摘要:
/* 自定义promise 1. 执行MyPromise构造函数,要立即执行executor 2. promise实例对象,内部有三种状态 初始化 pending 成功 resolved 失败 rejected 注意:状态只能修改一次 如果executor内部出错了,promise状态改成rejec 阅读全文
摘要:
//防抖函数 function debounce (fn, delay) { let timer = null; return function () { //接收this,该this当前指向dom元素 const that = this; //接收参数 const args = arguments 阅读全文