弟弟的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;
	}
}
posted @ 2019-11-29 12:42  朝闻道-夕可死  阅读(118)  评论(0编辑  收藏  举报