js面试题关键字区别事件循坏同步异步

let const var区别

在JavaScript中,let、const和var是用于声明变量的关键字,它们之间存在一些差异。以下是详细介绍:

  • var。在ES5及之前的版本中,使用var关键字声明变量。它的特点包括函数作用域,即变量的作用域仅限于声明它的函数内部;变量提升,即在声明变量之前使用它不会报错,但值默认为undefined;可以重复声明同一个变量。
  • let。在ES6中引入的let关键字用于声明块级作用域的变量。它的特点包括块级作用域,即变量只在当前代码块内有效;不可重复声明,即同一个作用域内不能多次声明同一个变量;没有变量提升,即在声明语句之前使用它会导致ReferenceError错误。
  • const。在ES6中引入的const关键字用于声明常量。它的特点包括块级作用域,即常量只在当前代码块内有效;常量一旦被赋值就不能修改,尝试修改会抛出TypeError错误;不可重复声明,即同一个作用域内不能多次声明同一个常量。

综上所述,三者的主要区别在于变量作用域、变量提升和变量重复声明。通常推荐使用let和const来声明变量,以避免变量提升和重复声明等问题,从而使得代码更加安全和规范.

js 同步与异步

首先JavaScript语言的一大特点就是单线程,即(同一时间只能做一件事情),同步任务即阻塞模式。 异步任务即非阻塞模式。 同步任务都在主线程上执行,形成一个执行栈。

异步任务(js的异步是通过回调函数实现的放入到消息队列中比如:

① 普通的事件。click、resize等

② 资料加载,load、error 等

③ 定时器,setInterval、setTimeout等

执行顺序:

①先执行执行栈中的同步任务

② 异步任务(回调函数)放入任务队列中

③ 一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行。

事件循环

我们把任务分为同步任务和异步任务。js把异步任务分为宏任务和微任务

在es5之后,JavaScript引入了promise,这样不需要浏览器,JavaScript引擎自身也能够发起异步任务了。

宏任务 由(浏览器、node发起)、 微任务 由(js引擎发起的任务)比如promise(Promise本身是同步的,then/catch的回调函数是异步的)

所以我们把代码可能分为3种

① 同步代码(js执行栈/回调栈)

② 微任务的异步代码(js引擎) process.nextTick (node) promise.then( ) catch( )

Async/Await Object.observer等等

③ 宏任务的异步代码 script(代码块) setTimeout/ setInterval定时器 setImmediate 定时器

再看三种代码的执行顺序: 同步代码 →微任务的异步代码(promise等) →宏任务的异步代码(setTimeout/ setInterval等)

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

事件循环是一个单线程循环,用于监视调用堆栈并检查是否有工作即将在任务队列中完成。如果调用堆栈为空并且任务队列中有回调函数,则将回调函数出队并推送到调用堆栈中执行。

相关推荐
BD_Marathon5 分钟前
Vue3_关于CSS样式的导入方式
前端·css
苹果电脑的鑫鑫13 分钟前
vue和react缩进规则的配置项如何配置
前端·vue.js·react.js
BD_Marathon15 分钟前
Vue3_工程文件之间的关系
前端·javascript·vue.js
weibkreuz18 分钟前
模块与组件、模块化与组件化的理解@3
开发语言·前端·javascript
拾忆,想起21 分钟前
单例模式深度解析:如何确保一个类只有一个实例
前端·javascript·python·微服务·单例模式·性能优化·dubbo
yaoh.wang27 分钟前
力扣(LeetCode) 83: 删除排序链表中的重复元素 - 解法思路
程序人生·算法·leetcode·链表·面试·职场和发展
RealizeInnerSelf丶28 分钟前
Web 网页如何唤起本地 Windows 应用并传递参数(含 Electron 自动注册 + 手动配置指南)
前端·windows
IT_陈寒35 分钟前
Redis 性能优化实战:5个被低估的配置项让我节省了40%内存成本
前端·人工智能·后端
chilavert31836 分钟前
技术演进中的开发沉思-261 Ajax:动画优化
前端·javascript·ajax
尘心cx40 分钟前
前端-APIs-day3
开发语言·前端·javascript