蛮可爱 2022-05-04 13:57:15
@Ma63d 你给的链接里描述很清晰,microtask跟你说的这些无关。
链接描述,一个event loop的典型步骤:
- Select the oldest task...
- Set the event loop's currently running task to the task selected in the previous step.
- Run: Run the selected task.
- Set the event loop's currently running task back to null.
- Remove the task that was run in the run step above from its task queue.
- Microtasks: Perform a microtask checkpoint.
- Update the rendering
- If this is a worker event loop...
- Return to the first step of the event loop.
Update the rendering是event loop的一个步骤,Microtasks也是event loop的一个步骤,在执行完Microtasks,浏览器开始Update the rendering,至于run the resize steps
等是Update the rendering里面的内容,跟Microtasks无关。
蛮可爱 2022-05-04 13:56:27
/** 题目:随机生成一个长度为 10 的整数类型的数组,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20],将其排列成一个新数组,要求新数组形式如下,例如 [[2, 3, 4, 5], [10, 11], [20]]。 理解:把连续的数字从小到大放到一个数组中 */
//生成随机数 let arr = Array.from({length:10},()=>~~(Math.random()*20)); //[2, 10, 3, 4, 5, 11, 10, 11, 20] [...new Set(arr)].sort((a,b)=>a-b).reduce((a,b)=>{ var l= a.slice(-1)[0]; l&& l.slice(-1)[0] + 1 == b ? l.push(b) : a.push([b]); return a; },[]) // [[2,3,4,5],[10,11],[20]]
蛮可爱 2022-05-04 13:51:56
Number.prototype.add = function (number) { if (typeof number !== 'number') { throw new Error('请输入数字~'); } return this + number; }; Number.prototype.minus = function (number) { if (typeof number !== 'number') { throw new Error('请输入数字~'); } return this - number; }; console.log((5).add(3).minus(2));扩展
Object.prototype.add Object.prototype.minus也是可以的
这个方法,可以扩展到数字字符串类型和排除
NaN
值Number.prototype.add = function (value) { let number = parseFloat(value); if (typeof number !== 'number' || Number.isNaN(number)) { throw new Error('请输入数字或者数字字符串~'); }; return this + number; }; Number.prototype.minus = function (value) { let number = parseFloat(value); if (typeof number !== 'number' || Number.isNaN(number)) { throw new Error('请输入数字或者数字字符串~'); } return this - number; }; console.log((5).add(3).minus(2));对于在
Object
上添加原型方法是不建议的,因为这个影响太大,会影响所有以Object
构造的对象
function MyNumber(){ MyNumber.prototype= new Number().__proto__ MyNumber.prototype.add = function (number) { if (typeof number !== 'number') { throw new Error('请输入数字~'); } return this + number; }; }
蛮可爱 2022-05-04 13:48:38
@mqyqingfeng 大大,console.log(0 == "n")为什么是等于true?Number('n')没搞明白为什么等于0,不是说如果有一个字符不是数字,结果都会返回 NaN么?为啥Number('n')不是等于NaN
这个跟类型转换没啥关系。 是各个浏览器处理 if (false) {}
的方式不一样。 chrome貌似是不论条件判断是否通过都会执行一遍里面的逻辑。 safari是不会执行里面的逻辑的。 貌似红宝书还是哪里说过这个来着具体忘记了
蛮可爱 2022-05-02 01:37:29
Promise.retry = function (promiseFn, times = 3) { return new Promise(async (resolve, reject) => { while (times--) { try { var ret = await promiseFn(); resolve(ret); break; } catch (error) { if (!times) reject(error); } } }); }; function getProm() { const n = Math.random(); return new Promise((resolve, reject) => { setTimeout(() => n > 0.9 ? resolve(n) : reject(n), 1000); }); } Promise.retry(getProm);
- 共 1 页
- 1
'11'表示的是4进制的数啊 5 是十进制 1=>1 2=>2 3=>3 10=>4 11=>5
没有包含大于三的数字 就可以 懂了吗
第 2 题:['1', '2', '3'].map(parseInt) what & why ?