变量

ES6中,增加了let和const两个关键字声明变量。

建议大家放弃var声明变量的模式。var的特性与现代语言差异过大,非常容易造成bug

1,let

let声明变量非常简单,如下代码:

let name = 'Tom';
console.log(name);

let a = 1;
let b = 2;
let sum = a+b;

在声明变量中,变量名为驼峰命名法。例如:let myName = 'Tom';

变量一定要先申明,在使用,例如:

console.log(name);//错误,找不到name
let name = 'Tom';

2,const

const声明的变量,其值不能改变,代码如下:

const age = 10;
age = 11;//error,const 声明的变量,其值不能改变

但大家一定注意一点,const声明的变量值不能变,但如果该变量为对象,其对象属性值可变。

const person={
    name:'Tom',
    age:10,
};

person.name = 'Jhon';//没问题

person = {
    name:'TT',
    age:11
}//error,错误,不能改变person的值

3,变量作用域

let和const声明的变量,以大括号为作用域边界,只有在变量作用域内,才可以使用该变量,超过变量作用域再使用该变量,报错。例如:

{
    const name = 'Tom';
    console.log(name);//正确
}
console.log(name);//错误!name作用域再上面大括号内,超过无法使用

在有多层作用域嵌套的情况下,如果有同名变量,内层变量会屏蔽外面变量作用域,例如:

{
    const name = 'Tom';
    {
        const name = 'Jim';
        console.log(name);//打印为Jim
    }
    console.log(name);//打印为Tom
}

在多层作用域嵌套下,如没有同名变量,作用域范围不变。例如:

{
    const name = 'Tom';
    {
        console.log(name);//打印为Tom
    }
    console.log(name);//打印为Tom
}

注意,在多层作用域嵌套下,内层如有声明同名变量,内层变量声明之前,变量不能使用。例如:

{
    const name = 'Tom';
    {
        console.log(name);//错误!找不到name变量!
        const name = 'Jim';

    }
    console.log(name);//打印为Tom
}

results matching ""

    No results matching ""