弟弟的ES6笔记——let命令
大家好这是Lz第一篇ES6笔记
我会不定期将学习内容(ES6标准入门)的总结和自己的理解分享出来
希望自己可以坚持下去,与大家一起进步。
let命令
作用域
let声明的变量只会作用于所在语句块
{
let value = 2333;
}
value // ReferenceError: a is not defined
那么大家就可以使用let进行熟悉的for循环写法了
for(let i = 0;i <= m;i++ ){
//...
}
i // ReferenceError: a is not defined
不存在变量提升
var声明的变量会有变量提升现象,在其声明前为undefined
而let命令声明的变量必须在其声明之后使用
console.log(value);// undefined
var value = 2333;
console.log(name);// ReferenceError
let name = "xiaoming";
暂时性死区
let所声明的变量将会绑定(binding)所在区域,不受外部影响
var value = 2333;
if(true){
value = "嘤嘤嘤";// ReferenceError
let value;// 绑定此语句块
}
ES6明确规定,如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域,如果声明前使用此变量将会报错
“暂时性死区”意味着typeof不再是安全的操作
typeof value;// ReferenceError
let value;
不允许重复声明
let不允许在相同作用域内重复声明同一个变量
// 报错
function(){
let value = 2333;
var value;
}
//报错
function(){
let value = 2333;
let value;
}
同样的,即便是函数参数也不能重复
//报错
function(value){
let value = 2333;
}
//不报错
function(value){
var value = 2333;
}
//不报错
function(value){
{
let value = 2333;
}
}