12let和const

12let和const

(1)let
  1. 不挂载在window上
  2. 不会进行变量提升,必须先声明再使用,否则报错(暂时性死区)
  3. 不能重复在同一作用域下声明同一个变量名
  4. 会产生块级作用域,所声明的变量只在 let命令所在的代码块内有效。
  5. special:for循环的小括号也会形成作用域,代码块是这个小括号的子作用域。
//先声明再使用(暂时性死区)
//✅
let a = 123;
{
   console.log(a);
};
//❎Cannot access 'a' before initialization at XXX
let a = 123;
{
   console.log(a);
   let a = 456;
};
//只在代码块内有效
{
    let a = 10;
    var b = 1;
}
console.log(a);//报错:ReferenceError: a is not defined.
console.log(b);//1

for循环遍历时,无需像var一样使用闭包和立即执行函数了,因为他会单独形成一个作用域

<body>
    <div class="box">0</div>
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
<script>
	for( let i = 0; i < boxs.length; i++ ){
        boxs[i].onclick = () => {
            console.log(i);
        };
    };
</script>
(2)const
  1. 不挂载在window上
  2. const声明一个只读的常量,不能再重新赋值
  3. 不会进行变量提升,不能重复在同一作用域下声明同一个变量名
  4. 必须初始化,否则报错。不能在初始化前使用他(暂时性死区)
  5. 会产生块级作用域,所声明的变量只在 const命令所在的代码块内有效。
const num = 1;
++num;//❎Uncaught TypeError: Assignment to constant variable.atXXX

const abm = 123;
function some_e () {
   console.log( abm );
   {
      const abm = 456;
    }
};
some_e();//123

const qwe = 123;
console.log( window.qwe );//undefined
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值