编程技术文章分享与教程

网站首页 > 技术文章 正文

Javascript面试题总结1

hmc789 2024-11-18 12:57:09 技术文章 2 ℃

1,use strict有什么意义和好处

答:use strict表示严格模式,使调试更加容易,防止意外的全局变量,消除this强制,不允许重复的属性名称或参数值

2,NaN是什么?

答:NaN属性代表一个不是数字的值,它的类型是Number,

3,深拷贝与浅拷贝的区别?

答:假设B复制了A,当修改A时,如果B也跟着变化,说明是浅拷贝,如果B没变,就是深拷贝

4,基本数据类型与引用数据类型

答:基本数据类型:有number,string,boolean,null,undefined,名值存储在栈内存中

引用数据类型:是指Object类,名存在栈内存中,值存在于堆内存中,在栈内存会提供给一个引用的地址

5,js中闭包是什么?

答:闭包是一个可以访问外部封闭函数作用域链中的变量的内部函数,封闭的作用域

6,什么是防抖和节流?有什么区别?如何实现?

答: 通过防抖和节流的方式来减少调用频率

函数防抖:当持续触发事件时,一定时间段内没有再触发时间,事件处理函数才会执行一次,

如果设定时间到来之前,有触发了事件,就重新开始延时

函数节流:当持续触发事件时,保证一定时间段内只调用一次事件处理函数。


7,介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

Set(集合):ES6新增的一种新的数据结构,类似数组,但成员是唯一且无序的

WeekSet 对象允许你将弱引用对象存储在一个集合中,只能存储对象引用,不能存放值,

对象中的存储值都是被弱引用的,可能存在对象中值被垃圾回收掉的情况

Map(字典):以键值对的形式存储不重复的值

WeakMap:对象是一组键值对的集合,其中键是弱引用对象,而值可以是任意

8,介绍下深度优先遍历和广度优先遍历,如何实现

答: 深度优先不需要记住所有的节点,所以占用空间小,而广度优先需要先记录所有的节点占用空间

深度优先有回溯操作所以相对而言事件会长一点

总结:深度优先采用的是堆栈的形式,即先进后出

广度优先则采用的是队列的形式,即先进先出

9,ES5/ES6 的继承的区别?

答: ES5中通过构造函数继承,继承属性,再通过原型链继承,继承方法;

ES6中通过extends关键字进行继承

区别:

ES5中先创建子类的实例this,再通过父类构造函数或原型向其上添加属性或方法。

ES6中是先通过super创建父类实例this,再向其中添加属性或方法,ES6中有两条原型链

10,setTimeout、Promise、Async/Await 的区别?

答:setTImeout 定时任务

Promise 同步的立即执行函数,在executor中执行resovle/reject时,会先执行then/catch,

当主栈完成后,才会调用resolve/reject中存放的方法执行

async/await async函数返回一个Promise对象,当函数执行的时候,一旦遇到await就会先返回,等到触发的异步操作完成

再执行函数体后面的语句

11,JS 异步解决方案的发展历程以及优缺点

答:未完

Tags:

标签列表
最新留言