当前位置: 首页 > 后端技术 > Node.js

JavaScriptArray.forEach源码解读

时间:2023-04-03 13:59:05 Node.js

源码实现函数myForEach(arr,callback){letT,k;if(arr===null){thrownewTypeError('thisisnullornotdefined');}//用于处理传入的arr为非数组(字符串等)的情况constO=Object(arr);//无符号右移:十进制转二进制右移constlen=O.length>>>0;if(typeofcallback!=='function'){thrownewTypeError(`${callback}不是函数`);}if(arguments.length>1){T=回调;}k=0;while(k{console.log(item);//123})技能点1,无符号右移:convert将对应的数转化为二进制,然后右移得到值。const旧值=64;//在二进制中等于100000constnewValue=oldValue>>>5;//等于二进制的10,即十进制的22。使用技巧:转换数据(值不变,其他类型全部转为0)1>>>0//1undefined>>>0//0null>>>0//0'string'>>>0//0注释1.asyncawait的语法糖不起作用:由于其内部封装,只简单调用回调函数,并没有处理异步函数,所以即使asyncawait也不起作用。2.循环无法随时退出:不能使用break/continue来退出或中断循环,因为其内部使用了while循环。