前端常见面试题③

1、宿主对象和本机对象有什么区别?

宿主对象由环境提供,例如浏览器中的窗口或文档对象。本机对象(如数组或字符串)是 ECMAScript 规范的一部分,它们的行为由语言本身定义。

2、解释可变对象和不可变对象之间的区别。JavaScript 中不可变对象的示例是什么?不变性的优点和缺点是什么?如何在自己的代码中实现不变性?

可变对象可以随着时间的推移改变其状态,而不可变对象在创建后不能修改。JavaScript 中不可变对象的一个例子是字符串。

不变性的优点包括更简单的代码和更容易的调试,而缺点包括潜在的内存开销。不变性可以通过避免直接修改并使用对象克隆或函数式编程等技术来实现。

3、解释同步函数和异步函数之间的区别。

同步函数逐步执行,每一行都等待前一行完成。异步函数允许在上一步完成之前执行到下一步。异步函数通常用于非阻塞操作。

4、什么是事件循环?调用堆栈和任务队列有什么区别?

事件循环负责利用单个线程执行 JavaScript 中的操作。它使用调用堆栈来跟踪当前正在执行的操作,并使用任务队列来管理异步任务。调用堆栈按照后进先出的顺序处理函数,而任务队列则按照先进先出的顺序处理。

5、高阶函数的定义是什么?

高阶函数是一种采用一个或多个函数作为参数和/或返回一个函数作为其结果的函数。它允许编程具有更大的灵活性和模块化。

6、经典继承和原型继承有什么区别?

经典继承涉及从类继承的实例,创建基于类的分层系统。另一方面,原型继承涉及直接从其他对象继承的实例。它允许通过组合多个对象来选择性继承和组合。

7、函数式编程与面向对象编程相比有何优缺点?

函数式编程避免共享状态和可变数据,使代码更易于阅读和调试。面向对象编程依赖于共享的主状态,这可能会导致复杂性。

函数式编程还促进不变性并支持高阶函数,而面向对象编程则强调封装和多态性。

8、什么是词法范围?

词法作用域是指函数访问在其自身作用域之外定义的变量的能力。在外部或上部作用域中定义的变量在函数内部自动可用,无需将它们作为参数传递。

9、与对象相比,使用 ES6 映射有哪些优点?在数组上使用 ES6 集怎么样?

ES6 映射提供了一些优势,例如支持任何数据类型作为键、内置大小跟踪、迭代和顺序保存。ES6 集合提供了自动重复消除、高效的成员资格测试、顺序独立性和方便的集合操作等优点。

10、集合与数组有什么区别?

集合不能包含重复值,而数组可以。当唯一性很重要时,集合很有用。

你可能感兴趣的:(前端,面试,javascript)