let及cons

241 阅读2分钟

Let及const命令是ES6新增的两种新的声明格式,用于补全ES5标准中var声明变量的不足,下面具体介绍这两种命令。

1.1.1 let命令

在JS中是通过关键字“var”来声明变量的,但是在JS中用“var”来声明变量会出现变量提升的情况,代码如下:

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

这段代码中,如果没有声明var a = 10的话,打印变量a会出现“a is not defined”的错误,但是用“var”声明变量“a”后,“a” 的打印结果是undefined,出现这种结果的原因是因为“var”声明变量时的提升机制(Hoisting)导致的。实际上,在执行过程中JS会把上面的代码解析成如下格式:

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

也就是说通过“var”声明的变量系统都会把声明隐式的提升至顶部,这样的特性往往会让刚接触JavaScript及习惯其他语言的开发人员不适应,导致程序出现问题。所以针对以上情况,ES6引入了let命令来声明变量。let声明和var声明用法一致,但是不会出现变量突然提升的情况,具体代码如下:

	console.log(a);//UncaughtReferenceError:Cannot access 'a' before initializtion
    let a = 10;

利用let声明还可以把变量的作用域限制在代码块中,ES5中定义作用域有两种,全局作用域和函数作用域。ES5中没有块级作用域的概念,因此ES6中新增了块级作用域,用{}表示。块级作用域用于声明作用域之外无法访问的变量。主要有两种:

1)函数内部块级作用域:

   function test(){
   	  let a = 20;
   }
   test();
   console.log(a);

2)在字符{}之间的区域:

	{
    	let a= 10;
    }
    console.log(a);

let 在使用过程中除了上述情况外,还需要注意let声明过程中是禁止重复声明的:

	let a = 10;
    let a = 20;