2021年前端面试题——JS


目录:

DOM事件流有那些阶段?

解释事件冒泡以及如何阻止它?

事件委派/事件委托是什么?

如何理解 JS 中的this关键字?

更改this指向的方法有那些?

apply、call、bind 区别?

讲讲JavaScript 作用域

js函数声明三种方式

js变量声明

JS的数据类型有哪些?

如何判断JS变量的数据类型?

什么是闭包?

谈谈你对JavaScript原型,原型链的理解 

谈谈你对面向对象编程思想的理解,它有什么特点?

js 执行机制、事件循环

同步和异步的区别?

对前端性能优化有什么了解?一般都通过那几个方面去优化的?

JavaScript的数组的常用方法

事件捕获、事件冒泡以及事件代理

10.解释事件冒泡以及如何阻止它?

事件委派的使用及作用

1.如何理解 JS 中的this关键字?、如何理解JavaScript的this关键字、5-1 this的指向:

5-2 怎么改变this的指向:

JavaScript 中 call()、apply()、bind() 的用法、更改this指向的方法及其区别 

JS作用域与声名提升

1-1 声明 

1-1 声明 、较详细的:JS声明变量的六种方式

拓展:如果用  const  声明一个对象,改变对象中某个属性的值会发生什么?

如图:

为什么    对象中的b的值变了?如果换成直接给  a={b:3}可以吗?

 为什么会报错?

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。 对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。

 1-2 数据类型的分类:、JavaScript的数据类型详细介绍

1-3 数据类型的判断:

4 闭包、闭包到底是什么?、闭包的概念?优缺点?、破解前端面试(80% 应聘者不及格系列):从闭包说起

用小猪佩奇说明Javascript的原型和原型链

面向对象编程思想

js 执行机制、事件循环

拓展:宏任务、微任务

宏任务:整体代码 script,setTimeout,setInterval
微任务:Promise,process.nextTick
我们知道setTimeout这个函数,是经过指定时间后,把要执行的任务(本例中为task())加入到Event Queue中,又因为是单线程任务要一个一个执行,
如果前面的任务需要的时间太久,那么只能等着,导致真正的延迟时间远远大于你定义的延时时间。https://juejin.cn/post/6844903512845860872#heading-1
我们还经常遇到setTimeout(fn,0)这样的代码,0秒后执行又是什么意思呢?是不是可以立即执行呢?
答案是不会的,setTimeout(fn,0)的含义是,指定某个任务在主线程最早可得的空闲时间执行,意思就是不用再等多少秒了,只要主线程执行栈内的同步任务全部执行完成,栈为空就马上执行。

参考:这一次,彻底弄懂 JavaScript 执行机制

同步和异步的区别?

对前端性能优化有什么了解?一般都通过那几个方面去优化的?

JavaScript的数组的常用方法(一)、js常用数组方法

持续更新呦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!