标签:构造 模板 函数类型 语言 pad 科学 prot 常用 修复
es6是新一代的语言标准,es6规范了js使用标准,新增了js原生方法,更适合大型应用开发。
ES2015特指2015年发布的新一代js语言标准,而ES6特指下一代语言标准,目前等同于ES2015,ES5泛指上一代语言标准。
babel是一个ES6转码器,可以把ES6代码转化成ES5代码,以便兼容尚未支持ES5的项目
ES5没有块级作用域的概念
ES6新增块级作用域的概念
变量提升:在使用var申明变量的时候,会提到当前作用域的顶端,而赋值操作位置不变
var仅在function是局部变量,其他情况下是全局变量,存在变量提升 -- 局部变量
let一直充当局部变量,及时在if中外界也不能调用,不存在变量提升 -- 局部变量
const必须初始化,而且不能更改 , 不存在变量提升 -- 常量
var可以重复申明,let不可以
---优化---
新增字符串模板,在拼接大段字符串时,用反斜杠取代以往的字符串相加,可以保留空格和换行,使字符串看起来更美观
---升级---
ES6在String原型上新增了includes()方法,取代传统 index of 查找包含字符串的方法,includes() 返回false,语义更加明确
此外还新增了startsWith(), endsWith(), padStart(),padEnd(),repeat()等方法,可方便的用于查找,补全字符串
---优化---
1.数组结构赋值,let [a,b,c] = [1,2,3]
2.扩展运算符 ... 轻松实现数组和松散序列的转换,可以取代arguments对象和apply方法,轻松获取未知参数个数情况下的参数集合,例如:let a = [2,3,4]; let b = [...a]
---升级---
新增了find()方法,取代传统的只能用indexOf查找包含数组项目的方法,修复了indexOf查找不到NaN的bug([NaN].indexOf(NaN) === -1
)
新增了copyWithin(), includes(), fill(),flat()等方法
---优化---
ES6在Number原型上新增了isFinite(), isNaN()方法,用来取代传统的全局isFinite(), isNaN()方法检测数值是否有限、是否是NaN
---升级---
ES6在Math对象上新增了Math.cbrt(),trunc(),hypot()等等较多的科学计数法运算方法,可以更加全面的进行立方根、求和立方根等等科学计算。
---优化---let [apple, orange] = [‘red appe‘, ‘yellow orange‘];
1.对象属性变量式声明。ES6可以直接以变量形式声明对象属性或者方法。
2.对象解构赋值。
let {apple, orange} = {apple: ‘red appe‘, orange: ‘yellow orange‘};
---升级---
1.ES6在Object原型上新增了is()方法,做两个目标对象的相等比较,用来完善‘===‘方法。‘===‘方法中NaN === NaN //false
其实是不合理的
2.ES6在Object原型上新增了assign()方法,用于对象新增属性或者多个对象合并。
3.ES6在Object原型上新增了getOwnPropertyDescriptors()方法,此方法增强了ES5中getOwnPropertyDescriptor()方法,
可以获取指定对象所有自身属性的描述对象。结合defineProperties()方法,可以完美复制对象,包括复制get和set属性。
4.ES6在Object原型上新增了getPrototypeOf()和setPrototypeOf()方法,用来获取或设置当前对象的prototype对象
ES6在Object原型上还新增了Object.keys(),Object.values(),Object.entries()方法,用来获取对象的所有键、所有值和所有键值对数组
---优化---
箭头函数
1.箭头函数内的this指向的是函数定义时所在的对象,而不是函数执行时所在的对象
2.箭头函数不能用作构造函数,因为它没有自己的this,无法实例化
3.也是因为箭头函数没有自己的this,所以箭头函数 内也不存在arguments对象。
函数默认赋值
function es6Fuc (x, y = ‘default‘) {
console.log(x, y);
}
es6Fuc(4) // 4, default
---升级---
ES6新增了双冒号运算符,用来取代以往的bind,call,和apply。
foo::bar;
// 等同于
bar.bind(foo);
foo::bar(...arguments);
// 等同于
bar.apply(foo, arguments);
Symbol是ES6引入的第七种原始数据类型,所有Symbol()生成的值都是独一无二的,可以从根本上解决对象属性太多导致属性名冲突覆盖的问题。
对象中Symbol()属性不能被for...in遍历,但是也不是私有属性。
标签:构造 模板 函数类型 语言 pad 科学 prot 常用 修复
原文地址:https://www.cnblogs.com/bk770466199/p/13040847.html