ES6学习

新增的let const
都是块级作用域
let 和 var 的区别
let 定义在某个代码块的时候,只在某个代码块内生效
var 可以在代码块外生效
for 循环里定义let,循环变量的部分是一个父作用域,循环体内是一个单独的子作用域,一个作用域不能定义同一个变量
let不存在变量提升
var 在定义的变量前输出为undefined
let 在定义的变量钱输出会报错
短暂性死区
ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。在let命令声明变量tmp之前,都属于变量tmp的“死区”。
下图所示,这个代码会报错显示未定义,如果下面的var和let定义反过来,报错显示不能重复定义。
在这里插入图片描述let 不能在函数内部重新声明参数

const
指向某个地址,这个地址不可变,但是对象本身是可以变的
const f = {}
f = {} //这个会报错
f.attr = 1 ; //这个不会报错
如果想将这个对象冻结,不能再对其操作使用object.freeze
object.freeze(f);
顶级对象的属性
var function命令声明的全局变量,依旧是顶级对象的属性
let const class 全局变量和顶级对象脱钩
数组的结构解析
let [a,b,c] = [1,2,3];
对应的 a=1 b=2 c=3
也支持不完全解析
let [a,[b],c] = [1,[2,3],4]
默认值
let [a=‘1’,b] = [,2]
对象的赋值
let {abc} = {abc:‘123’}
let {abc:f} = {abc:123}
let {abc = 1} ={abc:132};
let {log,sin,cos} = Math
let {log} = console
let {log:f} = console
sin(1)
log(1)
f(1)
js里不将{}这个写在行首,js引擎就不会将这个理解成一个代码块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值