ES6新增(一)let与常量

let与var的区别

  1. let有作用域,如果let在{}花括号里面,则他的作用域仅限于花括号里面,在外面输出会报错。
  2. let不能重复声明,var的重复声明会覆盖上一个var,但是let不会,当你两次都声明一个变量时,系统也会给你报错。

  3. let没有变量提升,变量提升就是类似于
var i = 10;等价于var i;i=10;而且会把var i;自动提升到最前面

但是let没有,如果

consol.log(i);
let i = 10;

系统同样会给你报错,如果使用var,系统不会给你报错,

console.log(i);var i = 10;

这个时候控制台输出的值为undefined,这是因为此时的代码等价于

var i;console.log(i);i = 10

4.let有暂存死区

 let man = "123456";
        {
            console.log(man);//左右为难,所以报错
            let man = "654321"
        }
        console.log(man);

常量的规则:

常量拥有和let差不多的规则,即,常量有自己的作用域、不能重复声明、没有变量提升、暂存死区,除此之外,它比let还多了一条规则那就是不能改变自己的值,如下

const i = 10;
i = i+10;
console.log(i);//报错,因为常量一般不能被修改

系统会直接报错。

接下来做一下练习:

  1. 用循环输出按钮,当你点击每个按钮的时候,他会弹出自己是第几个输出的按钮
  2. 由于常量是ES6新增,那ES6之前是怎么使一个变量变为常量的

1.

 for(let i = 1;i <= 10; i++){
            let btn = document.createElement("button");
            btn.innerText = i;
            btn.onclick = function(){
                alert(i)
                console.log(i)
            }
            document.body.appendChild(btn);
        }

如果没有let写起来将会很麻烦,输出的结果都是10,但是let会使整个过程变得简单。

2.

Object.defineProperty(Object,'freezeObj',{
            value:function(obj){
                for (var i in obj) {
                    if (obj.hasOwnProperty(i)) {
                        Object.defineProperty(obj,i,{
                            writable:false
                        })
                    }
                }
            Object.seal(obj);
            }
        });
        var xiaoming = {
            age:18,
            name:"张三",
            function(){
                console.log("123456")
            }
        }
        Object.freezeObj(xiaoming)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭郭郭憨憨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值