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实现数组去重?


本文标签: 对象 函数 新增 使用 字符串