let与const
ES5中声明变量var关键字特点:
-
预解析: 变量声明提升
-
没有块级作用域: if和for大括号里面声明的变量也是全局的
ES6中声明变量let和const特点:
-
没有预解析: 变量必须先声明,才能使用
-
块级作用域: if和for大括号里面的变量是局部的
let与const区别:
-
let声明:变量,可以修改变量中的数据
-
const声明: 常量,只能赋值一次 不能修改
对象解构赋值
解构赋值本质 就是 变量赋值语法的简写语法
(1)取出 对象的属性值 赋值给 变量
let {uname,age,sex} = 对象名
(2)取出 变量的值 赋值给 对象的属性
let 变量名 = {uname,age,sex}
//1:取出 对象的属性 赋值 给变量
// let obj = {
// name: '张三',
// age: 18,
// sex: '男'
// }
/* ES5 */
let name = obj.name;
let age = obj.age;
let sex = obj.sex;
console.log(name,age,sex)
/*这行代码本质:声明三个变量 name,age,sex。取出右边obj对象对应的属性名赋值给左边的变量*/
// let{name,age,sex}= obj
// console.log(obj)
let name = '李四';
let age = 20;
let sex = '男';
let sayHi = function(){
console.log('你好');
}
/* ES6 */
let obj = {
name,
age,
sex,
sayHi(){
console.log('困zzzzzz')
}
}
console.log(obj)
数组解构赋值
let arr = [10, 20, 30]
/* ES6 */
// 1.取出数组的元素,赋值给变量
let [n1, n2, n3, n4] = arr
console.log(n1, n2, n3, n4)
// 2.取出变量的值,数组的元素
let num1 = 23
let num2 = 12
let num3 = 76
let arr1 = [num1,num2,num3]
console.log(arr)
结构赋值语法及应用总结
结构赋值本质: 变量赋值简写
- 重点掌握: 对象结构
1.1 取出对象属性 赋值给变量
语法: let{uname,age,sex} = obj
场景: 如果函数参数是对象,就可以进行结构
1.2 取出变量的值 赋值给对象
语法: let obj = {uname,age,sex}
场景: 获取多个表单数据,装入对象中
2. 结构赋值及其他用法
2.1 结构赋值默认值
let{name,age=18,sex} = obj
2.2 自定义结构变量名
let{sex:gender} = obj 相当于 let gender = obj.sex
箭头函数
1.箭头函数语法: 就是function简写
1.1 把function单词 替换成箭头 =>
1.2 把形参() 一到箭头的左边
2.箭头函数其他用法
2.1 如果只有一个形参,则可以省略形参小括号
a=>{return a*2}
2.2 如果函数体只有一行,则可以省略大括号,此时必须要省略return
a=>a*2
箭头函数this指向: 箭头函数没有this
* 箭头函数中使用this,会访问上级作用域this
*原因(作用域链):箭头函数没有this,就会往上级作用域找
//1.箭头函数常见用法
/* ES5 */
let fn = function () {
console.log('111')
}
fn()
/* ES6
箭头函数规则: (1)function变成 箭头符号 => (2)形参小括号写到箭头 => 左边
*/
let fn1 = () =>{
console.log('222')
}
fn1()
//2.箭头函数其他用法
//2.1 如果函数只有一个形参,则可以省略形参小括号
// let fn2 = (a) =>(return a*2)
let fn2 = a =>{
return a*2
}
let res = fn2(10)
console.log(res)
//2.2 如果函数体只有一行代码,则可以省略函数体大括号
//注意点: 如果省略函数体大括号,则返回值也要省略return
//下面代码等价于: let fn3 = function(a){ return a*2 }
let fn3 = a => a*2
let res1 = fn3(20)
console.log(res1)
展开运算符
1.拓展运算符: ...
2.作用:类似于 对象遍历的一种简写形式
3.应用场景介绍
3.1 连接数组(上拉加载下一页) arr.push(...arr2)
3.2 求数组最大值 Math.max(...arr)
//1. 连接两个数组
let arr1 = [10, 20, 30]
let arr2 = [40, 50, 60]
/* ES5写法:arr.push.apply(arr1,arr2) */
// arr1.push.apply(arr1,arr2)
// console.log(arr1)
/* ES6写法:arr.push(...arr2)*/
arr1.push(...arr2)
console.log(arr1)
//2. 求数组最大值和最小值
let arr = [88, 25, 60, 90, 100]
/* ES5写法 Math.max.apply(Math,arr)*/
let max = Math.max.apply(Math,arr);
console.log(max)
/* ES6写法 Math.max(...arr)*/
let max1 = Math.max(...arr)
console.log(max1)
数据类型
1.数据类型Set (集合) : 类似于数组,与数组唯一的区别是 : 不能存储重复元素
2.应用 : 数组去重
一行代码去重: let newArr = Array.from( new Set(数组) )
let arr = [10,10,20,20,30,30,40,40]
//1.声明Set
// let set = new Set(arr)
// console.log( set )
//2.把set转成真数组
// let newArr = Array.from(set)
// console.log(newArr)
/* 一行代码实现数组去重 */
let newArr = Array.from(new Set(arr))
console.log(newArr)