ES6 - let
ES6、
2016-08-19
资料整理
传送门: ES6文档
Getting Started
es5变量声明:
-
var
-
function
es6新增的变量声明:
-
let
-
const
-
import
-
class
let
声明变量。
类似于var
但是声明的变量只在let
命令所在的代码块内有效。
let a = 1;
var b = 2;
a; // 1
b; // 2
***************
// 另外一个例子
{
let a = 1;
var b = 2;
}
a; // undefined
b; // 2
var a = [];
for ( var i = 0; i < 10; i ++ ){
a[i] = function(){
console.log(i);
};
};
a[6]() // 10
****************************************
// 另外一个例子
var b = [];
for ( let i = 0; i < 10; i ++ ){
b[i] = function(){
console.log(i);
};
};
b[6]() // 6
let
不存在变量提升。
console.log(foo); // 输出undefined
console.log(bar); // error
var foo = 2;
let bar = 2;
let
暂时性死区
只要块级作用域内存在命令 let
不在受外部的影响。
块级作用域
外层作用域无法读取内层作用域的变量。
{
{let insane = 'Hello World'}
console.log(insane); // 报错
};
块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。
// IIFE 写法
(function () {
var tmp = ...;
...
}());
// 块级作用域写法
{
let tmp = ...;
...
}
do 表达式
现在有一个提案,使得块级作用域可以变为表达式,也就是说可以返回值,办法就是在块级作用域之前加上 do
,使它变为 do
表达式。
let x = do {
let t = f();
t * t + 1;
};