您的位置:首页 > 其它

ES6之一(let和const)

2017-03-06 16:42 267 查看
ES6理解

ES6规定了变量的问题,主要体现在变量或者函数的作用域问题上。

1.ES6取消了顶级变量,所以let , const , class声明的全局变量不存在顶级对象的属性,即

var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1
let b = 1;
window.b // undefined


2.块级作用域使得 { }中的变量或者对象不可以被外界所使用的,会报错,同时不存在变量提升,所以在未进行定义的情况下,不可以使用该变量,这就是所谓的暂时性死区

2.1. 为什么要是用块级作用域

在很多语言中,例如:C等都存在块级作用域,而 ES6 之前是没有的,

//C语言
#include <stdio.h>
void main()
{
int i=2;
i--;
if(i)
{
int j=3;
}
printf("%d/n",j); //use an undefined variable:j
}

//javascript语言
functin test(){
for(var i=0;i<3;i++){
}
alert(i);
}
test();//3
i是for循环中定义的变量,在一次次循环结束后,i为3,并且一直存在于程序内存中,造成内存泄露


块级作用域可以防止变量污染,并且防止上面造成的内存泄露

3.let定义的变量不可以在同一作用域下重复定义即:

(function () {
let a = 0;
let a = 4;
alert(a);
})()
//Identifier 'a' has already been declared


const定义的变量后必须进行初始化设置,即进行赋值

const s;

s=3

//Missing initializer in const declaration

4.ES6 的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括

号,就会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息