计算机网络/计算机科学与应用/系统/运维/开发

ES6第1回-let声明变量


1 块级作用域绑定

块级声明用于声明在指定块的作用域之外无法访问的变量。

块级作用域(亦被称为词法作用域)存在于:

a、函数内部

b、块中(字符{和}之间的区域)


let 声明变量: 可以把变量的作用域限制在当前代码块中

function getVale(condition){
    if(condition){
        let value ="blue";
        return value;
    }else{
        // 变量value在此处不存在
        return null;
    }
    //变量value在此处不存在
}

禁止重复声明:假设作用域中已经存在某个标识符,此时再使用let关键字声明它就会抛出错误

var count = 30;
// 抛出语法错误
let count = 40;

但如果当前作用域内嵌另一个作用域,便可在内嵌的作用域中用let声明同名变量

var count  = 30;
if(condition){
    // 不会抛出错误
    let count = 40;
}

const声明:使用const声明的是常量,其值一旦被设定后不可更改。因此,每个通过const声明的常量必须进行初始化

// 声明常量
const maxItems = 30;
// 未捕获的SyntaxError:常量声明中缺少初始值设定项
// Uncaught SyntaxError: Missing initializer in const declaration
const name;

用const声明对象

const声明不允许修改绑定,但允许修改值。这也就意味着用const声明对象后,可以修改该对象的属性值。

const person = {
    name:"Nicholas"
};

// 可以修改对象属性的值
person.name = "Greg";

// 抛出语法错误
person = {
    name:"Greg"
}

循环中的块作用域绑定:

let声明变量i只存在于for循环中,一旦循环结束,在其他地方均无法访问该变量。

for(let i = 0; i < 10; i++){
    process(items[i]);
}
// i这里不可访问,抛出一个错误
console.log(i);


<script>
        // 声明变量
        let a;
        let b,c,d;
        let e = 100;
        let f = 520; g = 'iloveyou', h = [];
        // 1、变量不能重复声明
        // let str = '张三';
        // let str = '李四';
        // 2、块级作用域  全局,函数,eval
        // if else while for 都有效
        {
            let girl = '周扬青';
        }
        //Uncaught ReferenceError: girl is not defined
        //console.log(girl);
        // 3、不存在变量提升
        console.log(song);
        let song = '呵呵';
        // 4、不影响作用域链
        {
            let school = '北京大学';
            function fn(){
                console.log(school);
            }
            fn();
        }
</script>


es6 let

好的生活就是不瞎想,做得多,要得少,常微笑,懂知足。

评论

^