声明变量:
var const let
var:定义全局变量,var声明的变量不具备块级作用域特性。用var定义的变量,有时候会污染整个js的作用域。
let:用于定义局部变量,有块级作用域特性。
const:定义常量,常量就是值(内存地址)不能发生改变的量,用const声明常量时必须赋值,否则报错。
解构赋值
以往赋值:
var a = 1;
var b = 2;
var c = 3;
通过数组解构方式进行赋值:
let [a,b,c] = [1,2,3];
数据的解构赋值,是根据位置一一对应,如果左边的变量大于右边的值,多余的变量会被赋值位undefined,并且左边的变量是可以有默认值的
{
let [a = 3,b] = []
console.log(a); / / 3
console.log(b); / / undefined
}
当把undefined和null放在右边给变量赋值时,如果是undefined,变量有默认值,输出结果还是默认值,如果是null,即使变量有默认值,输出结果依然会是null。
通过对象解构赋值
const person = {
name :‘zhangsan’,
age :‘28’,
work : ‘teacher’
}
let {name,age,work} = person;
console.log(name,age,work) //zhangsan 28 teacher
对象的解构与数组的解构,有一个重要的区别:数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,是根据键来取值的。如果左边的值多于右边的值,则赋值位undefined。
箭头函数
语法;
(参数1, 参数2 …) => { 函数体 }
let fn = (a,b) =>{
return a+b
}
console.log(fn(1,2)) //3
函数体中如果只有return语句,可以把{}省略掉,上面的例子可以写为
let fn = (a,b) => a+b
console.log(fn(1,2))
只有一个参数时,()可以省略掉
let fn = v =>v;
箭头函数中this的指向
箭头函数本身不绑定this,箭头函数在哪个地方被定义,this就和这个地方的this指向相同的地方
Set
Set类似于数组,但是Set成员的值都是唯一的,没有重复的值。
Set本身就是一个构造函数,可以通过new Set()生成Set实例。
案例:
数组去重
let fn = (arr1) =>{
const newSet = new Set(arr1);
return […newSet];
}
const arr = [1,2,6,3,4,5,1,2,3,6]
console.log(fn(arr)) //[1, 2, 6, 3, 4, 5]
通过[…newSet]就可以拿到对应的数组