JavaScript(JS) let和const关键字

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。let带有块级作用域,只会在所定义块生效。const用来定义常量(可以是字符串,数组,函数,对象等),并且初始值不可为空,但他并不是不可更改的。本文主要介绍JavaScript(JS) let和const关键字。

1、作用域

JavaScript 中共有两种作用域:全局作用域和方法作用域。使用 var 声明的变量的作用域是方法作用域,如下 date 变量在方法外面不可访问的:

function  getDate(){
var date = new Date(); //在getDate方法外不可访问
return date;
}

2、let 关键字

在 ES6 之前,是没有块级作用域的概念的。ES6 可以使用 let 关键字来实现块级作用域。
let 声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。

例如,

{ 
    let x = 2;
}
// 作用域外不能使用 x 变量
function test(){
    let n = 1;
    if (true) {
        let n = 2;
    }
    console.log(n); //值不会被修改,输出1
}
test();
if(1){
    let b = 100;
}
console.log( b );//错误 ReferenceError: b is not defined
//因为let的块级作用域,所以b变量只存在与if内部

3、const 关键字

const 用于声明一个或多个常量,声明时必须进行初始化,且初始化后值不可再修改.

例如,

const PI = 3.1415926535897;
PI = 3.14;      // 报错
PI = PI + 10;   // 报错
const c;//会产生报错.
const d = 1;//正确
const arr = [1, 2];
arr.push(1);//正确 [1, 2, 1]
arr[0] = 3;//正确 [3, 2, 1]
arr = [];//错误TypeError: invalid assignment to const `arr'

4、let 和 const 区别

constlet 的作用域是一致的,不同的是 const 变量一旦被赋值,就不能再改变了,而let则可以。

5、var 变量提升

JavaScript var 关键字定义的变量可以在使用后声明,也就是变量可以先使用再声明。

例如,

siteName = "cjavapy";    // 这里可以使用 siteName 变量
var siteName;

注意:

1)var 声明的变量属于函数作用域,letconst 声明的变量属于块级作用域;
2)var 存在变量提升现象,而 letconst 没有此类现象;
3)var 变量可以重复声明,而在同一个块级作用域,let 变量不能重新声明,const 变量不能修改。

推荐阅读
cjavapy编程之路首页