let
#与var类似,用于声明一个变量
特点:
# 再块作用域内有效
#不能重复声明
#不会预处理,不纯在变量提升。 变量提升就是一个预处理、预解析 的过程,预处理找到var 把var声明的变量提前,而赋值不提前;找到function后把整个函数都提前。而使用了let的话这些都不能
应用:
#循环遍历加监听
#使用let取代var是趋势
const 定义一个常量
#特点是不能修改 其他特点同let 保存不用改变的数据
解构赋值
解析完结构然后赋值,从对象或数组中提取数据,并赋值给变量(多个)类似与拆包
对象的解构赋值 let{n,a} = {n : 'tom' , a:12};
数组的结构赋值 let [a,b] = [1,'hello'];
用途 : 给多个形参赋值
赋值出的是全局变量 console.log 是全局调用 {}表示对象,解构赋值接收时必须用{}
解构赋值的原理是
let{username }= obj,username; #这样就意味着解构对象赋值时,被赋值的对象必须是解构中已有的对象,这样系统才能明白给谁那个值,否则就会出现Undefined。
当解构数组赋值时,通过数组下标一一对应,所以只要下标对应,具体被赋值的对象叫什么都无所谓;当需要取的数组数据的下标不为时,可以这样:let [ , , a ,b ] = arr ;这样的话就可以取到数组中任意位置的数据。
function foo({username , age}){ #在调用这个函数时,其实相当于{username, age}=obj
console.log(username , age);
}
foo(obj);
网友评论