分享前端13道面试题 es6篇

1.说一下对promise的理解?

        1.1 什么是promise?通过promise能解决什么问题?

promise是es6提供的一种异步解决方案,通过promise能够解决回调地域问题,所谓回调地域指的是当我们执行完一个操作之后再接收操作的结果只能通过回调函数的方式进行接收,回调函数的弊端就是写法臃肿,后期难以维护,所以es6提供了promise来解决。promise可以通过链式调用的方法来解决层层嵌套问题,但是写法不好,所以最终的代替方案是使用async和await

        1.2 promise的特点是什么?也就是三种状态?

promise一共有三个状态,分别是进行中,成功或者失败,如果成功的话通过resolve方法将正确结果返回出去,通过.then的方式接收,失败的话通过reject的方式将错误结果返回出去,通过.catch的方式接收,pending状态是进行中,一旦进行,状态就是不可逆的

        1.3 说一下promise怎么用?

如果要使用promise,需要对promise进行实例化,在实例化的构造函数里面有一个回调函数,这个回调函数里面有那个参数,分别是resolve和reject,可以通过promise的实例化对象调用.then或者.catch方式接收结果

        1.4 说一下promise的all方法和race方法?

promise还给我们提供了.all和.race,其中all方法的作用是将多个请求合并成一个请求,比如当首页需要请求10个接口,我们可以promise.all进行合并,.race的作用也可以将多个请求合并,不过是谁先请求成功就返回谁

         1.5 在项目中用promise做过什么?

在项目中经常使用promise对api进行封装以及如何a页面要获取b页面的数据,也可以通过promise来完成

2.说一下async和await以及他们和promise的区别? 

async和await是解决异步的终极方案,他是generatal的语法糖,async和await一般配合使用,当我们给函数前面加上关键字async,这个函数返回的值就是一个promise,而await是一个同步的操作,await只能配合async,不然会报错,await后面可以是表达式,也可以是一个promise,在await下面的代码必须等待await执行完之后才能执行

和promise的区别就是写法更加简洁

3.说一下es6新增的特性有哪些?

  1.  新增了变量声明方式也就是let和const

  2. 新增了解构赋值

  3. 新增了一个数组方法,字符串方法,正则表达的方法,函数的一些写法,对象的方法

  4. 新增了promise

  5. 新增了async和await

  6. 新增了class以及继承

  7. 新增了模块化

  8. 新增了新的数据类型

在项目中我也经常使用let和cosnt箭头函数以及解构赋值还有async和await

 4.说一下新增的数组方法有哪些?分别是什么意思?

Array.from 将类数组转化为真正的数组

Array.of 将数值转化为数组

copy.Within()是将指定位置的成员复制到其他位置

find方盒和findindex方法 查找符合条件的元素和查找符合条件元素的下标

includes方法 可以查看各个数组是否包含给定的值

flat方法将多维数组转化为一维数组或者指定维度的数组

遍历数组的方法:

forEach类似于for循环 主要用来遍历数组

map方法 作用是映射一个新数组,可以对数组进行遍历

filter方法 作用是返回一个符合条件新的数据,也有遍历数组的作用

5.说一下map,forEach,filter方法的作用以及区别

forEach 方法:循环原来的数组

map 方法:循环原数组并映射一个新的数组出来

filter方法:过滤不需要的数组元素

6.说一下var,let,const之间的区别

  • var存在提升,我们能在声明之前使用。let,const因为暂时性死去的原因,不能在声明前使用

  • var在全局作用域下声明遍历会导致变量挂载在window上,其他两者不会

  • let和const作用基本一致,但是后者声明的变量不能再次赋值

 7.说一下箭头函数与普通函数的区别?

在es6中提供了一种简捷的函数写法,我们叫做  箭头函数

写法:函数名=(形参)=>{....}   当函数体中只有一个表达式时,{}和return可以省略,当函数体中形参只有一个时,()可以省略

特点:箭头函数中的this始终指向箭头函数定义时离this最近的一个函数,如果没有最近的函数,则会指向window

区别:

  1. 箭头函数不能用于构造函数,不能使用new,而普通函数可以

  2. 在普通函数中,this总是指向调用他的对象,如果用作构造函数,this指向创建的对象实例,而箭头函数指向箭头定义时离this最近的一个函数,如果没有就指向window

8.说一下for in与for of的区别?

for in可以遍历对象,而for of遍历对象会报错

for in遍历数组得到数组的下标,而for of遍历会得到数组里的每一个元素

 9.说一下es6如何实现类以及实现类的继承?

es6提供了类这个概念,在es5中没有这个概念,想在es5中实现一个类型,我们只能构造函数的方式去创建一个类,而es6给我们提供一个更方便的方法,就是class,class可以理解为是构造函数的语法糖

我们创建一个类只需要用过关键词class去声明就可以了,他的调用方式和构造函数的调用方式是一样的

通过es6的类还会给我们提供一个extends这样的一个关键字,来实现继承

 10.说一下数组去重方法有哪些?es6如何实现去重?

indexof  双层for循环 set方法

11. 说一下如何检测对象里面有没有属性(或者如何检测一个对象是否为空)?以及如何获取对象里面所有的属性名?

Object.hasOwnProperty()

使用for in

通过object.keys方法,返回值是一个数组,里面包含了所有的属性名

 12.如何将多个数组合并成一个数组?

es5:

concat

for循环

es6:

扩展运算符

map方法

 13.说一下forEach、map、filter、reduce、some、every等方法的作用?

reduce:遍历数组求和

some:遍历数组每一项,有一项返回true就停止遍历,结果返回true,不改变原数组

遍历数组每一项,每一项返回true,则返回最终结果为true,当任何返回false时,停止遍历,返回false,不改变原数组

forEach:循环原来的数组

map:循环原数组映射出一个新数组

filter:过滤不需要的数组元素

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供具体的2024年前端试题一百道,因为面试题的内容和形式可能会因公司、职位和行业而异。不过,我可以提供一些通用的前端试题,以帮助您准备面试。 1. 请简述前端开发的主要技术栈包括哪些? 2. 请描述一下什么是HTML、CSS和JavaScript? 3. 请解释一下什么是响应式设计?如何在前端开发中实现响应式设计? 4. 请简述一下什么是前端框架,并列举几个常用的前端框架。 5. 请解释一下什么是Vue.js,并简述其核心概念和用法。 6. 请解释一下什么是React.js,并简述其核心概念和用法。 7. 请简述一下什么是Webpack,并解释其作用和用法。 8. 请解释一下什么是ES6,并列举一些ES6的新特性。 9. 请简述一下什么是前端性能优化,并列举一些优化技巧。 10. 请解释一下什么是HTTP/2,并简述其优点和缺点。 除了以上问题,您还可以准备一些更具体的问题,例如: 1. 请解释一下如何使用CSS选择器选择元素? 2. 请解释一下如何使用JavaScript操作DOM? 3. 请描述一下如何使用Vue.js实现一个简单的计数器组件。 4. 请解释一下如何使用React.js实现一个简单的表单组件。 5. 请描述一下如何使用Webpack进行代码拆分和优化。 6. 请解释一下什么是跨域问题,并简述如何解决跨域问题。 7. 请描述一下如何使用JavaScript进行异步编程,例如使用Promise和async/await。 8. 请解释一下什么是前端安全,并列举一些常见的安全问题及其解决方法。 希望以上信息对您有所帮助,祝面试成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值