一.let和var 的区别
1.新增了一个块级作用域 {}
if(true){
var n=2
}
console.log(n)//输出2
if(true){
let n=2
}
console.log(n)//Uncaught ReferenceError: n is not defined
var定义不会报错,是因为定义在window中,let是单独创造一个块级作用域,在{}中定义外部无法使用。
2.var 定义变量 存在变量的默认提升功能 ,let 和const没有
3.var 定义可以重复定义 ,let和const不可以
4.var 定义变量 自动挂载 window对象上 。let和const不会
5.let定义会有暂时性死区问题
var a=20
if(true){
a=40
console.log(a)
let a=50
}
这个运行后会报错,因为只要块级作用域内存在 let 命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。上面的代码中,块级作用域内 let 又声明了一个局a ,导致后者绑定这个块级作用域,所以在 let 声明变量前,对 a赋值会报错。
二.字符串的拼接
一般我js通常使用的是 "+" 符号进行拼接,就是比较麻烦,当然也可以使用反引号 ` ` 进行拼接,使用中更加的方便
let str="hello world"
// "213"+str+ "123"
console.log("我们的口号是"+str)
//利用字符串模板来拼接字符串 ``
console.log(`我们的口号是${str}`)
三.数据结构
let user={
name:"wangyi",
pass:"123",
uimg:"asdasdsa.jpg"
}
name =user.name
//解构的写法
// 左侧 key必须和右侧相同
let {name,pass}=user
console.log(name)
console.log(pass)
user.name
user.pass
es6的解构个人感觉方便了一点吧,看个人的习惯
四.箭头函数
1. 传统的函数中, this的指向性不明确,对着环境的变化随之发生变化,箭头函数,this指向性明确 永远指向生产环境
2. function函数 存在提升功能, 箭头函数没有
3. function函数可以作为构造函数,但是箭头函数不可以
4. function函数中 存在 arguments参数集合,箭头函数没有
五.扩展运算符
// rest参数 ...函数的参数中,参数整合数组 1,2,3 [1,2,3]
// 拓展运算符 展开复杂结构
let arr=[1,2,3]
console.log(arr[0],arr[1],arr[2])
console.log(...arr) //1,2,3