当前位置: 首页 > Web前端 > JavaScript

js面试常见问题梳理

时间:2023-03-27 01:51:58 JavaScript

ES6版本引入了哪些功能?let和const关键字。箭头函数。多行字符串。解构赋值。增强的对象字面量。Promisesvar、const和let之间的主要区别是什么?*用let和const声明的变量是块作用域的;用var声明的变量是全局范围或函数范围的。*var变量可以在其范围内更新和重新声明;let变量可以更新但不能重新声明;const变量既不能更新也不能重新声明。*var可以被提升到其作用域的顶部。其中var变量被初始化为未定义,而let和const变量未初始化(临时死区,TDZ)。*虽然var和let可以在没有初始化的情况下声明,但const必须在声明期间初始化。什么是承诺和异步等待?Promises是一种在JavaScript中启用异步编程的方法。通常,Promise意味着当程序调用一个函数时,它会返回一个结果,调用程序可以在进一步的计算中使用该结果。Async-await还有助于异步编程。它是promise的语法糖。Async-await语法简单,可以很容易地在单个函数中维护大量的异步调用。此外,async-wait可防止回调地狱。什么是闭包?在JavaScript函数中定义的函数称为闭包。它可以访问3种类型的范围(内部、外部和全局),在外部函数的情况下,除了访问变量外,它还可以查看参数。JavaScript是如何保持并发的?*事件循环。*微队列和宏队列。*打回来。*线程池和集群(多线程)。什么是回调并给出一个简单的例子回调函数是作为参数传递给另一个函数并在某些操作完成后执行的函数。functionmodifyArray(arr,callback){//在这里做一些事情arr。推(100);//然后执行传递给callback()的回调函数;}vararr=[1,2,3,4,5];modifyArray(arr,function(){console.log("数组已修改",arr);});函数声明有几种方式,有什么区别函数声明由function关键字组成,后跟一个强制性的函数名,一个用括号括起来的参数列表。速记方法定义可用于ES2015类的对象字面量和方法声明。箭头函数是使用一对括住参数列表的括号定义的。紧随其后的是一个粗箭头=>和一对分隔文字语句的花括号。在函数表达式中,您将函数分配给变量。可以使用Function构造函数动态创建函数,但存在安全和性能问题,不推荐使用。什么是匿名函数?这是一个没有名字的函数,它们在运行时使用函数运算符动态声明,因为它提供了比声明符更多的灵活性vardisplay=function(){alert("AnonymousFunctionisdeclared");}展示();如何从特定索引返回字符?charAt()方法可用于找出任何特定索引处字符的值,考虑到“n”是字符串的长度,索引可以从0开始到“n-1”结束。但是,索引的值不能为负数,不能等于或大于字符串的长度。varstr="LambdaTest";文档.writeln(str.charAt(4));什么是原型属性?原型属性通常用于实现继承。每个函数都有一个,默认值为空。方法和属性被添加到原型中以使其可用于实例。//计算矩形的周长functionRectangle(x,y){this.x=x;this.y=y;}Rectangle.prototype.perimeter=function(){return2*(this.x+this.y);}varrectangle=newRectangle(4,3);console.log(rectangle.perimeter());//outputs'14'异步编程及其重要性JS引擎在事件循环上运行。当遇到阻塞操作时,会触发请求并继续运行代码。一旦响应准备就绪,就会触发中断。事件处理程序被执行,控制流继续。因此,通过异步编程,单个线程可以同时处理多个操作。客户端JavaScript与服务器端的区别客户端JavaScript通常由基本语言和一些与浏览器中运行的脚本相关的预定义对象组成。由HTML直接嵌入,在运行时由浏览器执行。服务器端JS几乎就像客户端。但是,它是在服务器中执行的,需要编译代码才能部署。