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数组类型做的常用升级优化?
数组解构赋值:声明多个变量时使用起来更加简洁,映射关系清晰,而且可以直接设置默认值。
扩展运算符:可以轻松实现数组和松散序列中间的相互转换。在函数中使用可以取代argume
nts获得一个真正的数组。一般也常用于赋值数组。
在Array原型上新增了一些方法:
find:查符合条件的第一个元素,查不到返回undefined;
findIndex:查符合条件的第一个元素下标,查不到返回-1;
from:将类似组转换成数组;
of:将一组值转换成数组;
fill:将目标元素在指定位置填充完整;
flat:将多维数组按指定深度扩展;
includes:查数组中是否包含指定元素,返回true/false;
...
6、举一些ES6对Number数字类型做的常用升级优化?
在原型上新增了isNaN,isFinite方法。window下这两个方法会先将参数转换成数字再进行判断,会造成类似于‘NaN’字符串的判断问题,而原型上新增的方法就修复了这个问题,除此之外还有isInteger,isSafeInteger等等。
Math函数新增了一些方法:
unc():截取某一个数的整数部分;
Math.sign():求某一个数是正数负数还是0,非数字时返回NaN;
Math.cbrt():求某一个数的立方根;
...
7、举一些ES6对Object类型做的常用升级优化?
书写对象的属性和方法时更加简洁。
可以在对象上使用解构赋值和扩展运算符。
Class中新增了super指代父类。
在Object原型上新增了一些方法:
Object.is():判断两个目标对象是否相等;
Object.assign():合并对象。一般用于合并参数或者复制对象;
Object.keys(),values(),entries():对象key、value、键值对结合;
...
8、举一些ES6对Function函数类型做的常用升级优化?
箭头函数解决了this的指向问题:
普通函数的this指向调用对象,而箭头函数的this指向它的上下文;
箭头函数不能作为构造函数,无法实例化;
箭头函数不存在arguments,一般用扩展运算符获取未知个数的参数集合;
箭头函数可以给形参直接设置默认值。
因为箭头函数的this并不适用于所有场所,所以新增了双冒号运算符,用来取代以往的bind,call,apply来改变this的指向。符号左边是对象,右边是函数,将函数中的this指向左边的对象。
9、es6字符串转数组Symbol是什么,有什么作用?
Symbol是新增的一种基本数据类型,返回一个唯一的值,常用于对象中定义某一个唯一或者私有的key,解决对象因属性名过多而导致的属性名冲突覆盖问题。但是作为对象的key时不能被for-in循环遍历出来。
10、Set是什么,有什么作用?
Set是一种类似于数组的数据结构,但是每个元素都必须是唯一的,常用于数组的去重。
11、Map是什么,有什么作用?
Map是一种类似于对象的数据结构,他的key不受数据类型的约束可以是任意类型。
12、Proxy是什么,有什么作用?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论