ES6之let和count(笔记)

ES6之let和count

关于定义(声明)变量

作用域:1.全局 2.函数作用域(局部)

ES6)新增加了两个重要的 JavaScript 关键字: let 和 const。

let 声明的变量只在 let 命令所在的代码块内有效。

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

1.let

(1).没有预解析,不存在变量的提升。

在代码块内,只要let定义变量,在之前使用,都是报错,只能先定义完在使用。

<script>
        let a = 12;
        console.log(a);//
    </script> // 报错 ReferenceError: a is not defined

let是块级作用域

<script>
        if(true){
            //var a=12;
            let a=12;
        }
        alert(a);//报错 ReferenceError: a is not defined
    </script>

(2) 同一个作用域里, 不能重复定义变量(
暂时性死区)

 <script>
            let a = 12;
            function fn(){
                alert(a);  //TDZ开始  暂时性死区
                alert(b)
                let a = 5;  //TDZ 结束
                let b = 12;
            }
            fn();
        </script>
        //报错:ReferenceError: Cannot access 'a' before initialization

(3) for循环,for循环里面是父级作用域

 <script>
       for(let i = 0; i<10; i++){
           console.log(i);//正常显示
       }
       alert(i);//报错:ReferenceError: i is not defined
    </script>

(4).变量 i是用 var 声明的,在全局范围内有效,所以全局中只有一个变量 i, 每次循环时,i 指的是全局变量 i ,所以此时的 arr[5] 是 10。

变量i是用 let 声明的,当前的 i 只在本轮循环中有效,每次循环的 i其实都是一个新的变量,

<script>
   var arr =[];

   for(var i=0; i<10; i++){
       arr[i]=function(){
           console.log(i);
       }
   }
   arr[5](); //10

   var arr =[];
   for(let i=0; i<10; i++){
       arr[i]=function(){
           console.log(i);
       }
   }
   arr[5]();//5
</script>

2.count(特性和let一样)

(1) const定义变量不能修改

(2)const定义完变量,必须有值,不能后赋值,不能修改

建议:以后就用let,不要再使用var.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值