ES6的解构,讲讲应用场景
await 和 promise的区别
ES6 的继承和 ES5 的区别
ES6 的class可以看作只是一个ES5生成实例对象的构造函数的语法糖。它参考了java语言,定义了一个类的概念,让对象原型写法更加清晰,对象实例化更像是一种面向对象编程。Class类可以通过extends实现继承。它和ES5构造函数的不同点: 类的内部定义的所有方法,都是不可枚举的。 2.ES6的class类必须用new命令操作,而ES5的构造函数不用new也可以执行。 3.ES6的class类不存在变量提升,必须先定义class之后才能实例化,不像ES5中可以将构造函数写在实例化之后。 4.ES5 的继承,实质是先创造子类的实例对象this,然后再将父类的方法添加到this上面。ES6 的继承机制完全不同,实质是先将父类实例对象的属性和方法,加到this上面(所以必须先调用super方法),然后再用子类的构造函数修改this。
CommonJS 和 ESM 的区别
Es6 数组方法,哪些是会改变原数组
箭头函数有什么特性
- 箭头函数的this指向永远是外层函数的this
- 由于this指向的问题,箭头函数不能做构造函数
- 箭头函数中没有定义arguments关键字,会解析到外层函数的arguments,想获取箭头函数的参数可以用ES6的剩余参数(…操作符)特性
- 如果箭头函数只包含一个表达式,那么就可以省略函数体的花括号和return语句,并且这个表达式会被当作返回值
- 箭头函数作为类成员方法,箭头函数里的this直接指向类的实例对象,不需要手动绑定this指向
箭头函数为什么没有this
- 因为箭头函数没有自己的作用域。所以箭头函数的this会和调用者共享一个作用域
- 箭头函数内部的 this 会在编译的时候被 变量替代
map和foreach的区别
相同点:
- 都是循环遍历数组中的每一项
- 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
- 匿名函数中的this都是指向window
- 只能遍历数组 不同点
- map()会分配内存空间存储新数组并返回,forEach()不会返回数据
- forEach()允许callback更改原始数组的元素。map()返回新的数组 应用场景