ES6中let变量的特点,使用let声明总汇

时间: 2017-12-28阅读: 1631标签: ES6

ES6中let变量的特点

1.在ES6之前是没有块级作用域的,let声明变量存在块级作用域,只在它所在的代码块有效
2.let不能先使用再声明
3.暂时性死区,在代码块内使用let命令声明变量之前,该变量都是不可用的
4.不允许重复声明,在相同作用域内,重复声明同一个变量。


1、存在块级作用域  

在不使用let要实现块级作用域,通常借助立即执行匿名函数来实现 :

(function(){
  var a= 1;
}());
console.log(a); //出错,not defined

如果使用Let,在{}就可以生效:

{
  let a = 1;
}
console.log(a); //出错 not defined


2、let不能先使用再声明

console.log(a); //出错,Uncaught ReferenceError: a is not defined
console.log(b);//undefined
let a = 1;
var b=1;

在这个语句块中,在变量声明之前引用这个变量会导致一个 ReferenceError的结果。所以let不能先使用在声明


3、暂时性死区 

在块级作用域内,若存在用let命令声明的变量,则所在区块对该变量形成封闭作用域,也就是该变量无视外部的同名变量。而又因为不存在变量提升,所以在该区块中,不能在声明前使用该变量。

var a  = 1;
if(true){
  a = 2; //出错 not defined
  let a; 
}

对比var

var a = 1;
if(true){
  a = 2; //var允许重复声明,而且变量提升,故a=2正常赋值
var a;
}


 4.不允许重复调用

相同作用域内重复声明同一个变量,也包括不能和var,const变量名重复

let a = 1;
let a = 1; //出错 let不可重复声明

var b = 1;
let b = 1; //出错 let不可重复声明

const c = 1;
let c = 1; //出错 let不可重复声明


 

es6 class

构造函数的prototype属性,在 ES6 的“类”上面继续存在。事实上,类的所有方法都定义在类的prototype属性上面。

es6之迭代器

迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value ,以及一个布尔类型的 done

ES6 - let、const、var的区别

为了使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言,ECMAScript 6.0(简称ES6)在标准中添加了很多新的特性。我们将用几篇文章总结一下ES6标准中一些常用的新特性。本片文章主要讲解ES6中的let、const命令,并区分其与var命令的区别。

ES6新的变量声明方式

在ES6之前,JavaScript是没有块级作用域的,如果在块内使用var声明一个变量,它在代码块外面仍旧是可见的。ES6规范给开发者带来了块级作用域,let和const都添加了块级作用域,使得JS更严谨和规范。

es6数据变更同步到视图层

数据变更同步到视图层有一个很重要的东西就是Proxy,Proxy的作用就是可以隐藏真正的对象,而用户去修改它的代理对象.Proxy可以监听数据的变化,例如

ES6、7、8常用新特性总结(超实用)

ES6常用新特性:let && const、解构赋值、箭头函数、 ...操作符、 iterable类型、类、ES7常用新特性:Array.prototype.includes、Exponentiation Operator(求幂运算)、Object.values/Object.entries

对ES6的yield示例分析

这里主要是对yield关键字的,yield实际上可以看作是一种新的中断机制,大家都知道javascript函数执行是顺序的,中途没有暂停,等待消息只能通过回调或者settimeout等延迟检查来完成。

ES6+js原生注意点

Symbol属性私有化,数据保护,let不支持变量声明预解析(先声明后使用),支持块作用域,const不支持变量声明预解析(先声明后使用),不允许重复声明(暂存死区),事件委托,解构赋值

es6 Reflect对象

Reflect是ES6为操作对象而提供的新API,而这个API设计的目的只要有:将Object对象的一些属于语言内部的方法放到Reflect对象上,从Reflect上能拿到语言内部的方法。如:Object.defineProperty,修改某些object方法返回的结果。让Object的操作都变成函数行为。

ES6 系列之私有变量的实现

在阅读 《ECMAScript 6 入门》的时候,零散的看到有私有变量的实现。旨在加深 ES6 部分知识点的理解,重点讲解块级作用域、标签模板、箭头函数、Symbol、Set、Map 以及 Promise 的模拟实现、模块加载方案、异步处理等内容

内容以共享、参考为目的,请勿用于商业用途。其版权归原作者所有,如有侵权,请与小编联系,情况属实将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全