ES6 let、const

版权声明:原创内容请勿转载 https://blog.csdn.net/qq_40662457/article/details/83181592

ES6中新增的两个声明标识符 let 、const

var  默认全局、函数作用域,有预解析(存在变量解析)

let:块级作用域,只在{  }范围内起作用,没有预解析(不存在变量解析),不能被重复定义(声明)

 可以通过以下一个简单for循环的对比轻松看出差异

<input type="button" class="btn1" value="let"/>
<input type="button" class="btn2" value="var"/>

<!-- 对比var定义的全局变量下的console和块级作用域下let定义的console -->
<script>
    for(let i=0;i<10;i++){
        console.log(i);
    }

    for(var i=0;i<10;i++){
        console.log(i);
    }

</script>

<input type="button" class="btn3" value="var_alert"/>
<input type="button" class="btn3" value="var_alert"/>
<input type="button" class="btn3" value="var_alert"/>
<input type="button" class="btn3" value="var_alert"/>

<input type="button" class="btn4" value="let_alert"/>
<input type="button" class="btn4" value="let_alert"/>
<input type="button" class="btn4" value="let_alert"/>
<input type="button" class="btn4" value="let_alert"/>

<!-- 对比var定义的全局变量下的console和块级作用域下let定义的console -->
<script>
    for(let i=0;i<4;i++){
        $(".btn3").eq(i).click(function(){
            alert(i);
        });
    }

    for(var i=0;i<4;i++){
        $(".btn4").eq(i).click(function(){
            alert(i);
        });
    }

</script>

const :作用域和 let 命令相同,只在声明所在的块级作用域内有效

             定义(声明)常量(不能被修改的),声明的同时必须赋值,先声明后赋值会报错     const obj = 123;

//三种书写方式
const obj = "技术";
const arr = ['chen','shi','jia','zu'];
const arr = {
    user:'chen',
	hostname:'ID',
	password:'123'
};

//数组可以被扩展,也可以被禁止
const arr = ['chen','shi','jia','zu'];
arr.push('qiye');
console.log(arr);

//使用object.freeze()函数可以禁止数组被扩展
    const arr = object.freeze(['chen','shi','jia','zu']);
    arr.push('qiye');
    console.log(arr);
//  PS:报错

猜你喜欢

转载自blog.csdn.net/qq_40662457/article/details/83181592