这是我参与更文挑战的第6天,活动详情查看:更文挑战
ES6(一)
let\const
- let\const 命名变量和常量 let 与 var区别在于let有块级作用域,var申明的变量会有变量提升效果,const与let区别 是 const定义的是常量,不可修改
解构赋值
变量、数组、对象都可以进行 结构赋值,解构赋值的拷贝是浅拷贝,即如果一个键的值是复合类型的值(数组、对象、函数)、那么解构赋值拷贝的是这个值的引用,而不是这个值的副本。
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x // 1
y // 2
z // { a: 3, b: 4 }
// 解构赋值必须是最后一个参数,否则会报错。
let { ...x, y, z } = someObject; // 句法错误
let { x, ...y, ...z } = someObject; // 句法错误
模板字符串的使用
let word = 'world'
let str = `hello ${word}`
字符串新增方法
传统上,JavaScript 只有`indexOf`方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。
+ **includes()**:返回布尔值,表示是否找到了参数字符串。
+ **startsWith()**:返回布尔值,表示参数字符串是否在原字符串的头部。
+ **endsWith()**:返回布尔值,表示参数字符串是否在原字符串的尾部。
[ES2019](https://github.com/tc39/proposal-string-left-right-trim) 对字符串实例新增了`trimStart()`和`trimEnd()`这两个方法。它们的行为与`trim()`一致,`trimStart()`消除字符串头部的空格,`trimEnd()`消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
等....一系列不常用的方法
数组的扩展
ES6 在Number对象上,新提供了`Number.isFinite()`和`Number.isNaN()`两个方法。`Number.isFinite()`用来检查一个数值是否为有限的(finite);`Number.isNaN()`用来检查一个值是否为`NaN`。
对象的扩展
-
对象内属性和方法都提供了简洁的写法
-
属性的可枚举性和遍历
Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。let obj = { foo: 123 }; Object.getOwnPropertyDescriptor(obj, 'foo') // { // value: 123, // writable: true, // enumerable: true, // configurable: true // }描述对象的
enumerable属性,称为“可枚举性”,如果该属性为false,就表示某些操作会忽略当前属性。目前,有四个操作会忽略
enumerable为false的属性。for...in循环:只遍历对象自身的和继承的可枚举的属性。Object.keys():返回对象自身的所有可枚举的属性的键名。JSON.stringify():只串行化对象自身的可枚举的属性。Object.assign(): 忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性。
这四个操作之中,前三个是 ES5 就有的,最后一个
Object.assign()是 ES6 新增