JavaScript的经典高频面试题解析
发布日期:2021-06-30 11:51:05
浏览次数:3
分类:技术文章
本文共 2042 字,大约阅读时间需要 6 分钟。
数组的map, filter和reduce, 三个方法有什么区别? 以及使用场景?
答案: * map 可以操作每个数组内元素, 并且返回每个元素, 最终map方法会返回一个全新数组 * filter 可以遍历每个数组元素, 过滤符合return 条件的元素, 最终filter方法会返回一个全新数组 * reduce 可以对每个元素进行求和运算, 可以是数字求和, 也可以是字符串拼接一起, 最终返回一个总和或者拼接好的字符串 使用场景: map, 一般用于遍历, 返回新数组使用 filter, 用于过滤符合条件的元素出来 reduce, 用于进行求和运算
bind 和 apply / call的区别?
答案: 共同的关系, 都可以改变函数内this的指向. bind是将函数返回, apply和call是立即调用函数, 函数马上触发
let, var, const 之间的区别是?
答案: let: 修饰的变量, 是块级作用域 var: 修饰的变量, 是函数级作用域 const: 修饰的变量, 是无法被修改的, 一般用于定义常量
箭头函数的特性?
* 箭头函数是匿名函数 * 箭头函数的this指向外层作用域的this的值 * 箭头函数不绑定arguments, 而用...rest剩余参数解决 * 箭头函数不能作为构造函数 * 箭头函数没有原型属性
ES6模板字符串好处是?
* 为构造多行字符串, 或者字符串拼接提供了极大的便利 * 可以极大简化我们的标签字符串的拼接
谈一谈你对async...await的理解?
答案: async...await是基于promise的generator语法糖,它用来等待promise的执行结果,常规函数使用await没有效果;async修饰的函数内部return不会得到预期的结果,会得到一个promise对象;await等待的promise结果是resolve状态的内容,reject状态的内容需要使用try...catch获取,await关键字必须要出现在async修饰的函数中,否则报错。
ES6中的Symbol类型什么作用?
答案: ES6新增了Symbol数据类型,它用来生成一个独一无二的值,它Symbol数据常用来给对象属性赋值,让对象属性具备唯一性,不容易被覆盖。
Set和Map的特点?
答案: (1): Set是一种类似数组的集合类型,它与数组不同的是,不允许存在重复数据;常用操作方法有:add,delete,has,clear等;遍历使用forEach / for...of; (2): Map是一种类似对象的集合类型,它与对象不同的是,key可以接受对象类型,常用的操作方法有:set,get,has,delete等;遍历使用forEach / for...of.
谈一谈你对promise的理解?
答案: Promise用来解决异步回调问题,由于js是单线程的,很多异步操作都是依靠回调方法实现的,这种做法在逻辑比较复杂的回调嵌套中会相当复杂;也叫做回调地狱;promise用来将这种繁杂的做法简化,让程序更具备可读性,可维护性;promise内部有三种状态,pedding,fulfilled,rejected;pedding表示程序正在执行但未得到结果,即异步操作没有执行完毕,fulfilled表示程序执行完毕,且执行成功,rejected表示执行完毕但失败;这里的成功和失败都是逻辑意义上的;并非是要报错。其实,promise和回调函数一样,都是要解决数据的传递和消息发送问题,promise中的then一般对应成功后的数据处理,catch一般对应失败后的数据处理。
深拷贝的原理?
答案: Js的深拷贝发生在对象/数组的赋值上,2个变量指向不同的内存空间, 所以互不影响;基本数据类型则不存在这样的行为;要完成对象/数组的深拷贝需要使用递归遍历所有对象的属性进行复制,也可以使用JSON.stringify和JSON.parse操作。
class 类中的super有哪些用法?
答案: Super在类中有两种用法,一个是super方法,一个是super对象;super方法只能出现在constructor方法中,super对象一般出现在子类覆盖父类的方法中。
静态变量和成员变量的区别?
答案: 静态的变量或方法归类所有,全局独一份,成员的变量或方法归对象所有,每次实例化对象成员方法和成员变量就会得到一份拷贝;对于一些通用性的属性或方法,可以考虑设置为静态。
谈谈你对class 的理解?
答案: ES6的class可以看作是一个语法糖,它的绝大部分功能ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法, 实际上底层转换还是ES5的构造函数
转载地址:https://jackiehao.blog.csdn.net/article/details/105964730 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月25日 13时54分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于java的SSM框架的教务关系系统的设计与实现
2019-04-30
别再问我什么是A/B测试了!
2019-04-30
如何用同期群分析模型提升留存?(Tableau实战)
2019-04-30
爱了,吹爆这个高颜值的流程图工具!
2019-04-30
一个数据项目
2019-04-30
基于JAVA_JSP电子书下载系统
2019-04-30
基于java出租车计价器设计与实现
2019-04-30
基于java的B2C的网上拍卖系统
2019-04-30
十二时辰篇:这该死的 996
2019-04-30
2021最新 上海互联网公司排名
2019-04-30
字节vs快手!取消大小周之战
2019-04-30
送一个闲置显示器!
2019-04-30
Oracle 行转列 pivot函数基本用法
2019-04-30
Oracle字符串分隔符替换(替换奇数个或偶数个)
2019-04-30
Oracle 利用 UTL_SMTP 包发送邮件
2019-04-30
Oracle 自定义函数实现split功能,支持超长字符串和clob类型的分隔
2019-04-30
Oracle 的循环中的异常捕捉和处理
2019-04-30
Oracle通过pivot和unpivot配合实现行列转换
2019-04-30
给Oracle数据库换一个1522端口的监听
2019-04-30