几个简单的JavaScript面试题
- var、const 和 let 的主要区别是什么?
(1)用 let 和 const 声明的变量是块范围(多指作用域)的;而 var 声明的变量是全局范围的或者函数范围的。;
(2)var 变量可以在其范围内更新和重新声明,let 变量可以更新但不能重新声明,const 变量即不能更新也不能重新声明;
(3)var 可以提升到其作用域的顶部;
(4)var 和 let 声明变量时可以不进行初始化(初始赋值),但 const 则必须赋予初始值。
- 什么是 promise 和 async-await?
(1)Promise 是 JavaScript 中启用异步编程的方法。一般来说,Promise 意味着程序调用异步函数时可以使用它运行后的结果;
(2)Async-await 是 Promise 的语法糖,使用它可以有助于执行异步编程。async-await 使用简单,可以便于在单个函数中维护大量异步调用,也可以有效防止回调地狱。
- 什么是闭包?
在 JavaScript 函数中定义的函数就称为闭包,他可以访问内部、外部以及全局范围内的变量。
- JavaScript中如何保持并发?
事件循环、微和宏队列、回调、线程池和集群(多线程)。
- "this"是什么?
与其他面向对象的编程语言中的“this”是由于类实例化的对象不同,在JavaScript中“this”是一个对象,是方法的所有者。
- 什么是BOM?
BOM 也就是浏览器对象模型,用作浏览器的交互介质。默认对象是 window,所有函数都可以直接调用,也可以通过指定 window 来调用 history、screen、location等 window 的不同属性。
这里是万物之恋,我们下次再见了!