js高频面试问题

43 阅读4分钟

1.宏任务、微任务、主任务的执行顺序:

主任务:new Promise、

宏任务:setTimeout

微任务:Promise下的then属于微任务

代码执行顺序:主任务>微任务>宏任务

2.计算属性与watch的区别:

(1)计算属性有缓存,当缓存的以来发生变化时,重新计算,返回一个新值;

(2)计算属性有getter和setter,监听属性没有get和set;

(3)计算属性用来同步执行计算数据,监听属性可以异步事件。

3.隔代组件数据传参的方式:

(1)props

(2)$emit

(3)provide 和inject

(4)eventBus

(5)$ref

(6)attrsattrs 和 listener

(7)parentparent 或 root

4.mixins生命周期和页面生命周期的执行顺序:

mixins > 页面生命周期

5.重排和重绘的区别:

重排(回流):对DOM的大小、位置进行修改后,浏览器需要重新渲染;

重绘:对DOM的样式进行修改,如color和background-color

6.css哪些属性可以继承?

1.字体:font

2.文本:line-height

3.元素的可见性:visibility

4.列表属性:list-style

5.布局:border-spacing

7.js的三大组成部分:

ECMAScript:js的核心内容,描述语言的基本语法,比如var,for,数据类型(数组、字符串);

文档对象模型(DOM):DOM把整个html页面化为元素构成的文档;

浏览器对象模型(BOM):对浏览器窗口进行访问和操作

8.js有哪些内置对象?

string\number\boolean\object\array\function\math\Regexp

Math

Date

Array

String

9.this指向的方法 及区别 :

call 、apply 、bind

call:第一个参数是this要指向的对象,其余参数是调用函数需要传入的参数;

apply:第一个参数是this要指向的对象,第二个参数是数组,表示调用函数需要传入的参数;

bind:bind( ) 是接收一个及其以上的参数,和call()一致,但是其返回是一个函数,而不是调用函数的返回结果。

10.js对数据类的检测方式有哪些?

typeof 返回数据类型

instance 返回boolean 'abc' instance String

constructor // ('abc').constructor===String

Object.prototype.toString.call()

10.new操作符具体做了什么?

image-20240202154355679

  1. 解释 JavaScript 的原型链和它如何工作。

  2. 解释 JavaScript 的事件循环和它如何处理异步操作。

  3. 谈谈你对 JavaScript 的 this 关键字的理解。

  4. 解释 JavaScript 的执行上下文和作用域链。

  5. 什么是 JavaScript 的闭包?请给出一个实际的使用场景。

  6. 解释 JavaScript 的 Promise 和它的工作原理以及优缺点。

    new Promise 是一个对象,封装了一个异步操作并且还可以获取成功或失败的结果。

    promise主要是来解决回调地狱问题,之前如果异步任务比较多,同时他们之前有相互依赖关系,就只能使用回调函数处理,这样就容易形成回调地狱,代码的可读性差,可维护性也很差。

    promise有三种状态:pending(初始状态)、fulfilled(成功)、rejected(失败)

    pending -> fulfilled ; pending -> rejected 一旦发生,状态就会凝固,不会再改变。

  7. 谈谈你对 ES6 新特性的理解,比如 let、const、箭头函数、模块导入导出等。

  8. 解释 JavaScript 的高阶函数,并给出一些例子。

  9. 什么是 JavaScript 的纯函数?为什么它们在函数式编程中很重要?

  10. 解释 JavaScript 的立即执行函数表达式(IIFE)。

  11. 如何在 JavaScript 中实现继承?

  12. 解释什么是 JavaScript 的回调函数以及回调地狱,以及如何避免回调地狱。

  13. 解释什么是 JavaScript 的同步和异步编程。

  14. 解释 JavaScript 中的错误处理和异常处理。

  15. 解释 JavaScript 的内存管理和垃圾回收机制。

  16. get和post的区别?

    get一般是获取数据,post一般是提交或修改数据;

    get参数是放到url上,所以安全性比较差;post是放在body中;

    get请求刷新服务器或退回是没有影响的,post请求退回时会重新提交数据;

    get请求时会被缓存,post请求不会被缓存;

    get请求会被保存在浏览器历史记录中,post不会;

    get请求只能进行url编码,post请求支持很多种(比如文件,表单);