码迷,mamicode.com
首页 > 其他好文 > 详细

ES6-let

时间:2017-07-15 16:44:50      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:hello   function   foo   作用域   开发   pre   ons   开发语言   允许   

      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

标签:hello   function   foo   作用域   开发   pre   ons   开发语言   允许   

原文地址:http://www.cnblogs.com/teletubbies/p/7146919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!