ES6之一(let和const)

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 的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括
号,就会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值