失效链接处理 |
初中级前端工程师面试题整理 PDF 下载
本站整理下载:
相关截图:
主要内容:
Css的BEM命名原则
For-in和for-of的区别
1.二者使用对象不同
for-in结构通常对 Array(数组)和Object(对象)都可以使用,而for-of结构在对Object(对象)使用时会报错。
2.在遍历时取到的内容不同
对于Array,使用for-in时是遍历取到数组的索引,需要拿到对应索引上的值需要使用 arr[index]的形式
对于Array,使用for-of时是遍历数组的元素值,可以直接使用,效果和forEach((item)=>{})结构中的item一致
对于Object(对象)使用for-in结构遍历访问到的是对象的 key,想要用到值得话需要使用 object[key]的形式
注意,通常对象的值访问有 “.” 和 “[]” 两种形式,但是当key是以变量的形式存在时,只能使用 “[]”访问。
Map和Set的优缺点和使用
二者都是键值对形式的Object类型
Map的优点在于便于增删查询,常用于前端数据字典
Set的有点在于便捷去重,将数组传入得到的就是去重后的Object类型
Js的事件循环机制
JavaScript 引擎是单线程
JavaScript 引擎是单线程,也就是说每次只能执行一项任务,其他任务都得按照顺序排队等待被执行,只有当前的任务执行完成之后才会往下执行下一个任务。
HTML5 中提出了 Web-Worker API,主要是为了解决页面阻塞问题,但是并没有改变 JavaScript 是单线程的本质。了解 Web-Worker。
JavaScript 事件循环机制
JavaScript 事件循环机制分为浏览器和 Node 事件循环机制,两者的实现技术不一样,浏览器 Event Loop 是 HTML 中定义的规范,Node Event Loop 是由 libuv 库实现。这里主要讲的是浏览器部分。
Javascript 有一个 main thread 主线程和 call-stack 调用栈(执行栈),所有的任务都会被放到调用栈等待主线程执行。
JS 调用栈
JS 调用栈是一种后进先出的数据结构。当函数被调用时,会被添加到栈中的顶部,执行完成之后就从栈顶部移出该函数,直到栈内被清空。
同步任务、异步任务
JavaScript 单线程中的任务分为同步任务和异步任务。同步任务会在调用栈中按照顺序排队等待主线程执行,异步任务则会在异步有了结果后将注册的回调函数添加到任务队列(消息队列)中等待主线程空闲的时候,也就是栈内被清空的时候,被读取到栈中等待主线程执行。任务队列是先进先出的数据结构。
Event Loop
调用栈中的同步任务都执行完毕,栈内被清空了,就代表主线程空闲了,这个时候就会去任务队列中按照顺序读取一个任务放入到栈中执行。每次栈内被清空,都会去读取任务队列有没有任务,有就读取执行,一直循环读取-执行的操作,就形成了事件循环。
|