「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战」。
let与const
let与const的区别:
- let :变量 值可以修改
- const : 常量 值不可以改变 只能赋值一次(只能在声明的时候赋值一次,之后无法改变)
ES6声明变量特点:
- 没有预解析 :变量必须要先声明再能使用
- 有块级作用域 :if和for大括号中都是局部变量
ES5 声明变量var特点
- 预解析 :声明提升到当前作用域最顶端
- 没有块级作用域 :var在if和for中都是全局变量
解构
对象解构
解构赋值
就是变量赋值的简写
语法:
- 取出对象的值赋值给变量
let obj = { name:'张三', age: 36, native:'中国' } let {name,age,native} = obj console.log(name,age,native) //张三 36 中国 - 取出对象的值赋值给变量
let obj = { name:'张三', age: 36, native:'中国' } let {name,age,native} = obj console.log(name,age,native) //张三 36 中国 let obj2 = {name,age,native} console.log(obj2);//{name: '张三', age: 36, native: '中国'}
对比ES5与ES6变量赋值
-
取出对象的值赋值给变量
let obj = { name:'张三', age: 36, native:'中国' } //Es6解构赋值,声明变量,自动取右边对象的同名属性赋值 //let {name,age,native} = obj //ES5传统赋值 let name = obj.name let age = obj.age let native = obj.native -
取出变量的值赋值给对象
let name = '张三' let age = 36 let native = '中国' //Es6解构赋值,可以和ES5混用,前提条件是 变量名和属性名一样 //let obj = {name,age,native} //ES5传统赋值 let obj = { name:name, age:age, native:native }
数组解构
数组也是对象所以和对象解构的原理一样
-
取出数组的值赋值给变量
let arr = [10,20,30,40,50,60] let [num1,num2,num3] = arr console.log(num1,num2,num3) // 10 20 30 -
取出变量的值赋值给数组
let num1 = 10 let num2 = 20 let arr = [num1,num2] console.log(arr) //[10,20]
函数参数解构
参数为对象类型
let obj = {
name:'张三',
age: 36,
native:'中国'
}
function fn({name,age,native}){
console.log(name,age,native);
}
fn(obj)//张三 36 中国
函数传参本质是实参给形参赋值,如果实参是对象,则形参可以使用解构赋值
箭头函数
什么是箭头函数
其实就是function简写
语法
- 去掉function 改成箭头 =>
- 将形参的小括号移到左边
- let fn = ()=>{}
- 调用一样还是fn()
用法
-
常规用法
let fn = ()=>{} -
其他用法
如果箭头函数只有一个形参,则可以省略小括号
let fn = 形参=>{}如果箭头函数大括号只有一行代码,则可以省略大括号。此时也要省略return
let fn = 形参=>一行代码
this的指向
谁’声明‘我,我就指向谁
真正含义:箭头函数没有this
箭头函数本身是没有this的,本质是通过作用域链访问上一级的this
展开运算符
语法
...需要展开的对象
作用
相当于遍历对象简写 把数组打开
场景
添加数组,运用于长列表
let arr1 = [1,2,3]
let arr2 = [...arr1]
console.log(arr2) //[1,2,3]
加油加油!!
努力学习!!