admin 管理员组文章数量: 1184232
2024年3月30日发(作者:translate tweet)
1、ES5、ES6和ES2015有什么区别?
2015年之前的版本统称为ES5,之后的统称为ES6,ES2015指代ES6.0。
2、babel是什么,有什么作用?
babel是一个 ES6 转码器,可以将 ES6 代码转为 ES5 代码,以便兼容
那些还未支持ES6的浏览器。
3、let有什么用,有了var为什么还要用let?
var存在因变量提升而导致的泄漏、覆盖等一系列问题,而let拥有自己的块级
作用域而且修复了声明变量带来的变量提升问题。
4、举一些ES6对String字符串类型做的常用升级优化?
新增了字符串模版,相比原来的字符串拼接方式更加简洁优雅。
在String原型上新增了一些方法:
includes:查找字符串中是否包含指定字符,返回true/false;
startsWith:是否以指定字符开头;
endWith:是否以指定字符结束;
padStart:向前填充指定字符;
padEnd:向后填充指定字符;
repeat:重复字符串到指定长度;
...
5、举一些ES6对Array数组类型做的常用升级优化?
数组解构赋值:声明多个变量时使用起来更加简洁,映射关系清晰,而且
可以直接设置默认值。
扩展运算符:可以轻松实现数组和松散序列中间的相互转换。在函数中使
用可以取代arguments获得一个真正的数组。一般也常用于赋值数组。
在Array原型上新增了一些方法:
find:查找符合条件的第一个元素,查找不到返回undefined;
findIndex:查找符合条件的第一个元素下标,查找不到返回-1;
from:将类似组转换成数组;
of:将一组值转换成数组;
fill:将目标元素在指定位置填充完整;
flat:将多维数组按指定深度扩展;
includes:查找数组中是否包含指定元素,返回true/false;
...
6、举一些ES6对Number数字类型做的常用升级优化?
在原型上新增了isNaN,isFinite方法。window下这两个方法会先将参
数转换成数字再进行判断,会造成类似于‘NaN’字符串的判断问题,而
原型上新增的方法就修复了这个问题,除此之外还有isInteger,isSafe
Integer等等。
Math函数新增了一些方法:
():截取某一个数的整数部分;
():求某一个数是正数负数还是0,非数字时返回NaN;
():求某一个数的立方根;
...
7、举一些ES6对Object类型做的常用升级优化?
书写对象的属性和方法时更加简洁。
可以在对象上使用解构赋值和扩展运算符。
Class中新增了super指代父类。
在Object原型上新增了一些方法:
():判断两个目标对象是否相等;
():合并对象。一般用于合并参数或者复制对象;
(),values(),entries():对象key、value、键值对结合;
...
8、举一些ES6对Function函数类型做的常用升级优化?
箭头函数解决了this的指向问题:
普通函数的this指向调用对象,而箭头函数的this指向它的上下文;
箭头函数不能作为构造函数,无法实例化;
箭头函数不存在arguments,一般用扩展运算符获取未知个数的参数集
合;
箭头函数可以给形参直接设置默认值。
因为箭头函数的this并不适用于所有场所,所以新增了双冒号运算符,
用来取代以往的bind,call,apply来改变this的指向。符号左边是对
象,右边是函数,将函数中的this指向左边的对象。
9、Symbol是什么,有什么作用?
Symbol是新增的一种基本数据类型,返回一个唯一的值,常用于对象中定义某
一个唯一或者私有的key,解决对象因属性名过多而导致的属性名冲突覆盖问
题。但是作为对象的key时不能被for-in循环遍历出来。
10、Set是什么,有什么作用?
Set是一种类似于数组的数据结构,但是每个元素都必须是唯一的,常用于数组
的去重。
11、Map是什么,有什么作用?
Map是一种类似于对象的数据结构,他的key不受数据类型的约束可以是任意类
型。
12、Proxy是什么,有什么作用?
13、Reflect是什么,有什么作用?
14、Promise是什么,有什么作用?
Promise是一个新的对象,用于解决异步回调问题,用链式结构解决以往回调函
数层层嵌套的问题。
15、Iterator是什么,有什么作用?
Iterator是一种标准,一种规范理念,遵循该标准的对象为可遍历对象,Set、
Map、Array、Object、String默认可以遍历。
16、for…in 和for…of有什么区别?
for-in仅可以遍历对象,而for-of可以遍历所有遵循Iterator标准的对象都
可以遍历,包括新增的Set、Map。
17、Generator函数是什么,有什么作用?
generator是Iterator接口的具体实现方式,generator函数会返回一个遍历器
对象,通过next()方法调用来改变generator函数的行为,用于解决异步深度
嵌套问题。
18、async函数是什么,有什么作用?
async相当于内置自动执行器的genrator函数语法糖,一般与Promise对象配
合实现异步编程解决方案。
19、Class、extends是什么,有什么作用?
Class是类的概念,实际是构造函数的语法糖,使对象写法更清晰,对象实例化
更像是面向对象的编程。Class通过extends实现继承。
20、module、export、import是什么,有什么作用?
ES6统一浏览器/服务器的模块化规范,取代以往AMD、CMD等一系列各不相同的
规范。export导出模块,import引入模块。
21、日常前端代码开发中,有哪些值得用ES6去改进的编程
优化或者规范?
- 使用箭头函数,this的指向更清晰;
- 使用let、const代替var;
- 使用字符串模版取代字符串拼接,可读性更高;
- 使用解构赋值定义变量,结构清晰,可读性更高;
- 使用class类定义构造函数,生动实例化对象;
- 保持模块化开发思维,常用export、import;
22、谈一谈你了解ECMAScript6的新特性/说说你对ES6的
了解?
- 引入了块级作用域
- 可以定义常量
- 解构赋值
- 扩展运算符
- 字符串扩展方法
- 数字扩展方法
- 数组扩展方法
- 对象扩展方法
- 函数扩展:箭头函数
- 引入了class类
- 新增symbol数据类型
- 新增set、map数据结构
- f循环
- Promise对象
- generator函数
- async函数
- 引入模块化体系
23、() 与原来的比较操作符 = 的区别?
与===相似,但是在比较0和NaN时进行了特殊处理。
24、Promise有几种状态,什么时候会进入catch?
三种状态:padding、fulfilled、reject,在reject状态时进入catch。
25、jQuery的ajax返回的是romise对象吗?
jquery的ajax返回的是deferred对象,通过promise的resolve()方法将其转
换为promise对象。
26、Promise构造函数是同步执行还是异步执行,那么 then
方法呢?
Promise构造函数是同步执行,then方法是异步执行。
27、比较async与generator?
async是generator的语法糖;
generator需要通过next()方法手动执行,而async自带执行器与普通函数的调
用方式一样;
async比generator更加语义化;
generator返回的是Iterator对象,而async返回的是Promise对象可以通过
then()方法调用。
28、比较var、let、const之间的区别?
let、const不存在提升,必须先定义后使用;
在同一个作用域中,let、const不能重复定义;
const定义时必须赋值,且一经定义不允许修改;
29、使用结构赋值,实现两个变量的值的交换?
30、使用解构赋值,完成函数的参数默认值?
31、如何使用Set实现数组去重?
版权声明:本文标题:ES6经典面试题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711732528a607995.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论