文章目录
一、变量/常量赋值
let 声明变量
1.与ES5中的var声明变量不同,let声明变量并不会提升
示例:
改变声明的位置,再次执行即可打印出a的值
当使用var声明变量时,可见在声明之前打印b虽然输出undefined但是没有报错,说明此时b已经声明,但是没有赋值。
2.具有局部作用域
示例:
在作用域之外打印a时则会报错
使用var声明时则不会出现这一现象
3.不允许重复声明
示例:
同样var声明变量也不会出现这种情况
4.const声明变量
const与let用法基本一致,唯一的不同点在于const必须声明时直接赋值,且常量值不能再改变
示例:
示例:
示例:
如例所示,更改const声明的变量或者在声明时不赋值均会报错
二、解构(模式匹配)
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值
1.集合解构
示例:
let [a,b,c,d] = [1,2,3,4];
console.log(a,b,c,d);
… 拓展运算符
用在=左边的时候,有聚合的作用,将剩余元素赋值给变量,返回一个数组。
示例:
let [a,...b] = [1,2,3,4];
console.log(a,b);
默认值
当匹配值严格等于undefined时,默认值生效
示例:
let [a,b = 0] = [1];
console.log(a,b);
2.对象解构
示例:
let obj = {
name : '张三',
age : 18,
}
let {name,age} = obj;
console.log(name,age);
重命名
let obj = {
name : '张三',
age : 18,
}
let {name:realname,age:realage} = obj;
console.log(realname,realage);
嵌套解构
let obj = { p: [ 'Hello', { o: 'World' } ] };
let { p: [x, { o: y }]} = obj;
console.log(x,y);
3.字符串解构
用数组进行解构 => 单个字符
let [a,b] = 'dw';
console.log(a,b);
用对象进行解构 => 解构出字符串的属性、原型中的方法
let {length:a,toString:b} = 'dw';
console.log(a,b);
三、对象
1.对象的简写
示例:
let name = '张三';
let age = 10;
let obj = {
name,
age,
}
console.log(obj);
2.对象方法扩展
Object.is(value1, value2);
判断两个值是否为同一个值
Object.assign(target, ...sources)
用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
Object.setPrototypeOf(obj, prototype)
设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null。
Object.getPrototypeOf(obj)
返回指定对象的原型(内部[[Prototype]]属性的值)。
Object.keys(obj)
返回一个包含所有给定对象自身可枚举属性名称的数组
Object.values(obj)
返回给定对象自身可枚举值的数组。
Object.entries(obj)
返回给定对象自身可枚举属性的 [key, value] 数组。
四、数组
数组方法扩展
Array.from()
将类数组对象转成数组
Array.of()
用于创建数组,接受参数为创建数组的元素
Array.prototype.find()
迭代方法,参数是个函数,查找满足条件的元素,返回第一个满足条件的元素或者undefined
Array.prototype.findIndex()
迭代方法,参数是个函数,查找满足条件的元素的索引,返回第一个满足条件元素的索引或者-1
Array.prototype.includes()
判断数组中是否包含某个元素,返回true或者false
Array.prototype.fill()
用来填充数组,该方法改变原值
Array.prototype.keys()
Array.prototype.values()
Array.prototype.entries()
用于将对象转换为数组