作用:声明变量
特点:
if(true) {
let a = 10;
}
console.log(a); //a is not defined
经典面试题
比较一下:
作用:声明常量
特点:
ES6允许从数组中提取值,按照对应位置,对变量赋值。对象也可以实现解构。
允许按照一一对应的关系从数组提取值,然后赋值给变量!
let ary=[1,2,3]
let [a,b,c]=ary;//这个中括号在等号左边,代表解构,从数组中提取值(不代表数组)
console.log(a);//1
console.log(b);//2
console.log(c);//3
属性匹配,变量名匹配对象中属性的名字,匹配成功,就将对象中属性的值赋给变量
let person = { name:"lily", age:20 };
let { name, age } = person;
console.log(name);//lily
console.log(age);//20
let person = { name:"lily", age:20 };
let { name:myName, age:myAge } = person;//myName,myAge属于别名
console.log(myName);//lily
console.log(myAge);//20
ES6新增的定义函数的方式
() => { }
const fn = () => { }
函数体只有一句代码,且执行结果是返回值,可省略大括号
const sum = (num1, num2) => num1+num2;
形参只有一个,可以省略小括号
const fn = v => v;
箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this
一个例子
var age = 10;
var obj = {
age: 20,
say: () => {
alert(this.age)
}
};
obj.say();//弹出10
PS:对象是不产生作用域,所以箭头函数被定义在了全局作用域下,调用时,this指向的是window
讲一个不定数量的参数定义成一个数组
function sum(first, ...args) {
console.log(first);//10
console.log(args);//[20, 30]
}
sum(10, 20, 30);
与解构配合使用
let students = ['lily', 'lily1', 'lily2'];
let [s1, ...s2] = students;
console.log(s1);//'lily'
console.log(s2);//['lily1','lily2']
与剩余参数相反,将数组或对象转为用逗号分隔的参数序列
let ary = [1, 2, 3];
...ary // 1,2,3
console.log(...arg);// 1 2 3
应用
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = [...arr1, ...arr2]; // [1, 2, 3, 4]
或者:
arr1.push(arr2);
let allDiv = document.getElementsByTagName("div");
allDivList = [...allDiv]
同上,将伪数组转换成真正的数组
let arrayLike={
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
}
let arr2=Array.from(arrayLike);//['a', 'b', 'c']
let arr2=Array.from(arrayLike,item=>item+'1');//['a1', 'b1', 'c'1]
找到第一个符合条件的数组成员,未找到返回undefined
let res = array.find((item,index) => item.id == 2);//返回第一个id为2的对象
找到第一个符合条件的数组成员的位置,未找到返回-1
let res = array.findIndex((item,index) => item.id == 2);//返回第一个id为2的对象索引
表示某个数组是否包含给定的值,返回布尔值
[1,2,3].includes(2); //true
模板字符串可以解析变量
let name = 'lily'
let string = 'hello,${name}';//"hello,lily"
模板字符串可以调用函数
const sayHello = function () {
return "hhhh"
}
let string = 'hello,${sayHello()},lily';//"hello,hhhh,lily"
let str = 'hello world'
str.startsWith('hel');//true
'x'.repeat(3);//"xxx"
类似于数组,但是成员唯一,无重复值
const s = new Set();
const set = new Set([1, 2, 3, 4, 4])
console.log(set.size);//4
可以利用Set去重
实例方法
遍历
与数组一样,有forEach方法,用于对每个成员执行某种操作,无返回值