theme: channing-cyan
1 forEach
forEach 跳出循环
try {
const formData = [
1,2,
]
formData.forEach((i) => {
if (i===1) {
res = false
throw new Error()
}
})
} catch (e) {
return res
}
比较for ,forEach之间的区别(延伸出for...of)
// 可以迭代 Array String Set:去重后的数组
let iterable = [10, 20, 30];
for (let value of iterable) {
value += 1;
console.log(value);
}
1、本质区别
forEach :负责遍历可迭代的对象,
for:是一种循环机制,只是能通过它遍历出数组
2、语法区别
参数 | 中断 | 其他 | |
---|---|---|---|
forEach | item,index,arr,this | (try...catch) | index不能被重置 |
for | index,arr | break continue return | 可以控制循环的起点 |
3、性能区别
性能比较:for > forEach > map
for:for循环没有额外的函数调用栈和上下文,所以它的实现最为简单。
forEach:对于forEach来说,它的函数签名中包含了参数和上下文,所以性能会低于 for 循环。
map:map 最慢的原因是因为 map 会返回一个新的数组,数组的创建和赋值会导致分配内存空间,因此会带来较大的性能开销。如果将map嵌套在一个循环中,便会带来更多不必要的内存消耗。
2 JavaScript 是单线程
为什么是单线程的喃?
这是因为 JavaScript
可以修改 DOM 结构,如果 JavaScript
引擎线程不是单线程的,那么可以同时执行多段 JavaScript
,如果这多段 JavaScript
都修改 DOM
,那么就会出现 DOM
冲突。
为了避免 DOM
渲染的冲突,可以采用单线程或者死锁, JavaScript
采用了单线程方案。
缺点及解决方案
但单线程有一个问题:如果任务队列里有一个任务耗时很长,导致这个任务后面的任务一直排队等待,就会发生页面卡死,严重影响用户体验。
为了解决这个问题,JavaScript 将任务的执行模式分为两种:同步和异步。
3 async 和await
多个await命令后面的异步操作,如果不存在继发关系(即互不依赖),最好让它们同时触发
let foo = await getFoo();
let bar = await getBar();
// 上面这样写法 getFoo完成以后,才会执行getBar
// 同时触发写法 ↓
// 写法一
let [foo, bar] = await Promise.all([getFoo(), getBar()]);
// 写法二
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise;
let bar = await barPromise;
4 数组的get方法
取数组内指定对象的值
常规做法:数组过滤,过滤后的数组下标索引0
,再取对应的键值
get方法:Array.get(key,value,name)
数组内对象满足key
value
一致。name
对应的是要取的键
const array=[]
// 方法1
const list = array.filter(i=>i.id===1)
const name = list[0].name
// 方法2
const name = array.get('id',1,'name)
开启编程成长之旅!这是我参与「编程 · 2 月更文挑战」的第 1 天
点击查看活动详情
本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!