ES6-let
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6-let相关的知识,希望对你有一定的参考价值。
ES6作为2015年发布的ECMAScript的标准,如今各大游览器对ES6的支持度越来越高,在随着JS的热门度地不断上升,感觉这门语言在不久的未来将会成为一个企业级开发语言。最近正好比较空,学习了一下ES6,先在这里做个笔记,以便之后查阅。
let命令
1.什么是let命令
类似var,用来声明变量
2.为什么需要let命令
ES5有两个作用域:全局作用域和函数作用域。然而没有块级作用域,变量会被污染。
var tmp = new Date(); function f() { console.log(tmp); //由于var命令使得变量提升,这里的tmp变量函数作用域下的tmp,而该作用域下的tmp未赋值。 if (false) { var tmp = ‘hello world‘; } } f(); // undefined
let命令为JS增加了块级作用域
let tmp = 1; function f() { console.log(tmp); if (false) { let tmp = ‘hello world‘; //该tmp存在于if的块级作用域中,不会影响外部的tmp变量 } } f(); //1
3.let与var区别
let不存在变量提升
// var 的情况 console.log(foo); // undefined var foo = 2; // let 的情况 console.log(bar); // ReferenceError let bar = 2;
在块级作用域中存在let命令,在该作用域的变量不会受外部影响
// var 的情况
var tmp = 1; if(true){ console.log(tmp); //1 var tmp = 2; }
// let 的情况
let tmp = 1; if(true){ console.log(tmp); //ReferenceError let tmp = 2; }
let不允许重复声明
// 能重复声明(a=1) var f=function(){ var a = 10; var a = 1; } // 报错 (Uncaught SyntaxError: Identifier ‘a‘ has already been declared) var f=function(){ let a = 10; let a = 1; } // 报错(Uncaught SyntaxError: Identifier ‘a‘ has already been declared) var f=function(){ var a = 10; let a = 1; }
以上是关于ES6-let的主要内容,如果未能解决你的问题,请参考以下文章