文档章节

ES6学习-let和const

Leezy__
 Leezy__
发布于 2016/07/28 11:33
字数 469
阅读 5
收藏 0

let命令

ES6新增了let命令,用于声明变量。

1. let命令不存在变量提升

// ES5
console.log(a); // undefined
var a = '123';

// ES6
console.log(b); // Uncaught ReferenceError: b is not defined
var b = '123';

在ES5中如果在var声明的变量之前引用,则该变量是undefined,而在ES6中如果在变量声明之前应用let声明的变量则会报错。

2. let变量存在暂时性死区

var a = '123';
if (true) {
  a = '234'; // Uncaught ReferenceError: a is not defined
  let a = '123';
}

用let声明的变量就相当于是绑定在了这个作用域内了,这个区域内封闭了这个用let声明的变量,所以凡是在这个区域内声明之前使用这个变量就会出现错误。

typeof a; // Uncaught SyntaxError: Invalid or unexpected token
let a = 'hello world';

这时候我们发现,typeof就不一定是是一个安全的操作了。

3.let不允许重复声明

// ES5
var a = 1;
var a = 2;

// ES6
let b = 1;
let b = 2; // Uncaught SyntaxError: Identifier 'a' has already been declared

用let声明的变量如果重复声明,则会报错。

4.let块级作用域

// ES5
for (var i = 0; i < 5; i++) {}
console.log(i); // 5

// ES6 
for (let j = 0; j < 5; j++) {}
console.log(j); // Uncaught ReferenceError: j is not defined

let只在他声明的那一个块作用域内可用,所以在它的快作用域之外引用会报错,let的块级作用域可以避免for循环中的i泄漏在全局作用域之中。

// ES5
(function () {
  var a ...   
}) ();

// Es6 
{
  let ... 
}

let的块级作用域可以代替IIFE,避免全局变量的污染问题。

 

const命令

ES6增加了const命令,用于声明常量。一旦声明,常量就不可改变。

const a; // Uncaught SyntaxError: Missing initializer in const declaration

对于const来说如果只声明不赋值的话,就会报错。

const的其他特性与let相同,这里就不再赘述。

© 著作权归作者所有

共有 人打赏支持
Leezy__
粉丝 1
博文 11
码字总数 11304
作品 0
朝阳
程序员
私信 提问
WEB前端学习:ES6块级作用域的概念详解

Web前端开发工程师是一个很新的职业,是从事Web前端开发工作的工程师。主要进行网站开发,优化,完善的工作。网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行...

web前端小辰
2018/06/01
0
0
ECMAScript 6教程 (一)

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文连接,博客地址为 http://www.cnblogs.com/jasonnode/ 。该系列课程是汇智网 整理编...

笔阁
2015/07/20
0
0
ES6、ES7、ES8特性-学习提炼总结(一)

ES6 ECMAScript 6.0,简称ES6是JavaScript语言的下一代标准,在2015年6月发布。目的是让JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 Babel转码器 Babel是一个广泛使...

永远保留内心的简单和单纯
2018/11/22
0
0
Nodejs下的ES6兼容性与性能分析

ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问题,但大家仍很疑惑,使用ES6会有...

ouven
2015/12/09
7K
13
ECMAScript6入门 学习之简介

1.什么是ECMAScript 6? ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业...

w-rain
2016/06/12
711
0

没有更多内容

加载失败,请刷新页面

加载更多

租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
34分钟前
1
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
2
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
1
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部