欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于Web面试的基础知识点(二)

程序员文章站 2022-06-17 18:46:20
...

1.如何将集合转化成数组?

  1. Array.form(arr, mapfn,thisArg)

用于将两类可以把对象转换为真正的数组:类似数组的对象和可遍历的对象(部署了Iterator接口的,String,ES6新增的Map和Set)。可以传3个参数,其中第一个是数组,必传;第二个是一个函数(类似map函数),对数组元素进行操作后再返回数组,可选;第三个是对于this关键字的指向,可选。

  1. slice()

可从已有的数组中返回选定的元素。 返回值:返回一个新的数组,包含从startend(不包括该元素)的 arrayObject中的元素。

请注意:该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。 所以在这里就是对集合A应用slice,返回一个新的数组,不对数组做任何改变。

  1. 展开运算符

把A集合的元素展开后,用数组[]承载,返回新的数组。
关于Web面试的基础知识点(二)

  1. map()
    返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意:
(1)map()不会对空数组进行检测。
(2) map() 不会改变原始数组。
所以map方法返回了一个新的数组,并且数组中每个元素是A里面的元素。

var ary = [12,23,24,42,1];  
var res = ary.map(function (item,index,input) {  
    return item*10;  
})  
console.log(res);//-->[120,230,240,420,10];  原数组拷贝了一份,并进行了修改
console.log(ary);//-->[12,23,24,42,1];  原数组并未发生变化

2.Event Loop - 1

求运行结果:

console.log("one")
setTimeout(function(){
console.log("two")
},0)
console.log("three")

个人理解:在定时器中设置的时间为0毫秒,输出结果应为:one three two
Note :Event Loop
JavaScript语言就采用Event Loop机制,来解决单线程运行带来的一些问题。
关于Web面试的基础知识点(二)
JS 在执行的过程中会产生执行环境,这些执行环境会被顺序的加入到执行栈中。如果遇到异步的代码,会被挂起并加入到 Task(有多种 task) 队列中。一旦执行栈为空,Event Loop 就会从 Task 队列中拿出需要执行的代码并放入执行栈中执行,所以本质上来说 JS 中的异步还是同步行为
回调时,被回调的函数会被放在event loop里,等待线程里的任务执行完后才执行event loop里的代码。
因此,上述代码会先把线程里的执行完后,再执行event loop里的setTimeout函数。
关于Web面试的基础知识点(二)
借鉴资料 : 阮一峰的网络日志

3.Event Loop - 2

求运行结果:

console.log(1);
let a = setTimeout(() => {console.log(2)}, 0);
console.log(3);
Promise.resolve(4).then(b => {
console.log(b);
clearTimeout(a);
});
console.log(5);

Output:
关于Web面试的基础知识点(二)
执行顺序是先执行同步的任务–输出1,3,5
在执行异步任务:其中异步任务分为宏任务微任务,微任务优先级高于宏任务。promise.then执行的微任务,输出4,然后clearTimeout(a)清除了定时器,于是不再打印2。
结果输出:1,3,5,4

4.不支持冒泡的事件

UI事件

load unload scroll resize

焦点事件

blur focus

鼠标事件

mouseleave mouseenter

JS事件监听(捕获&冒泡)

5. 如何阻止事件冒泡

事件绑定&移除&冒泡(如何阻止事件冒泡)

6.比较Ajax和Flash的优劣

Ajax

优势:

1.可搜索性
2.开放性
3.费用
4.易用性
5.易于开发。

劣势:

1.它可能破坏浏览器的后退功能
2.使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中

不过这些都有相关方法解决。

Flash

优势:

1.多媒体处理
2.兼容性
3.矢量图形
4.客户端资源调度

劣势:

1.二进制格式
2.格式私有
3.flash 文件经常会很大,用户第一次使用的时候需要忍耐较长的等待时间
4.性能问题

7.Promise的状态

一个Promise可能有三种状态:

等待(pending已完成(fulfilled已拒绝(rejected

一个promise的状态只可能从“等待”转到“完成”态或者“拒绝”态,不能逆向转换,同时“完成”态和“拒绝”态不能相互转换。

promise必须实现then方法(可以说,then就是promise的核心),而且then必须返回一个promise,同一个promise的then可以调用多次,并且回调的执行顺序跟它们被定义时的顺序一致。

then方法接受两个参数,第一个参数是成功时的回调,在promise由“等待”态转换到“完成”态时调用,另一个是失败时的回调,在promise由“等待”态转换到“拒绝”态时调用。同时,then可以接受另一个promise传入,也接受一个“类then”的对象或方法,即thenable对象。

Promise对象

相关标签: NowCoder刷题笔记