web前端—前端三剑客之JS-ES6(1):声明变量之let

参考菜鸟教程:https://www.runoob.com/w3cnote/es6-let-const.html

                        https://www.runoob.com/js/js-let-const.html

let是es6中的一个新的特性,和var一样,let也是用来定义变量的,但与var之间也有一些区别。

let是一个块级作用域,可以解决变量作用域的问题:

1、内部变量覆盖外部变量问题

    <script>
        var str = 'jiang-he';

        function name1() {
            console.log(str);
        }
        name1();   // 结果为:jiang-he

        function name2() {
            console.log(str);
            var str = 'hu-hai';
            
            // 等价于:
            // var str;
            // console.log(str);
            // str = 'hu-hai';
        }
        name2();    // 结果为:undefined
    </script>

2、变量泄露为全局的变量

        function fu1(n) {
            for(var i = 0;i<n;i++){
                var i = 10;
                console.log(i);
            } 
        }
        function fu2(n) {
            for(let i = 0;i<n;i++){
                let i = 10;
                console.log(i);
            } 
        }
        fu1(5);   // 结果为打印一次10
        fu2(5);   // 结果为打印5次10

let声明变量的特点

特点1:var有作用域提升,let没有作用域的提升 

        console.log(a1);   // 结果为:undefined,等价于var a1;  console.log(a1); a1 = 1;
        var a1 = 1;

        console.log(a2);   // 结果:报错(Uncaught ReferenceError: Cannot access 'a2' before initialization)
        let a2 = 1;

特点2:let不能重复申明变量

        var b1 = 1;
        var b1 = 2;
        console.log(b1);   // 后面的赋值会覆盖掉前面的赋值,结果为:2

        let b2 = 1;
        let b2 = 2;
        console.log(b2);    // 报错:(Uncaught SyntaxError: Identifier 'b2' has already been declared)

特点3:和es5中的var、function不同,es6开始let、const、class定义的全局变量不属于顶层对象window的属性

const 声明常量 

        let c = 3;
        c = 9;
        console.log(c);   // 变量的值可以被修改结果为:9

        const d = 4;
        d = 8;
        console.log(d);   // 常量一旦声明就不能修改,报错:(dfdf.html:80 Uncaught TypeError: Assignment to constant variable.)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值