ECMAScript 6中的let和const关键词
ECMAScript 6中多了两个定义变量的关键词,一个是let,另一个是const,后者顾名思义就是常量定义,前者的作用域范围是块级的。
一般写过js的童鞋都知道,同其他语言一样,JS中的变量作用域是函数域而不是块级分割的,但是涉及到变量提升(hosting),闭包等问题的时候,很多有经验的程序员依然会头疼。
var a = 5; if(true){var a = 10; } console.log(a);//10
上面的结果是10,但是我们看到,在if block内外都有一个a的定义,按我们正常的理解来看,这两个a应该占用的是不同的内存,而事实上,他们共用同一个内存。为此,ES 6中的let关键词“修复”了这个问题。
let a = 5; if(true){let a = 10; } console.log(a); //5
let作用在块级作用域中,所以不管是switch还是if还是for,只要是let定义的变量,他就只能在那个花括号内部起作用。let是一个让程序员比较省心的一个关键词,而还有一个令人兴奋的关键词是let的兄弟const,一旦定义一个变量为const类型,后面就不能对他进行修改。
const aa = 11; alert(aa) //11 aa = 22; alert(aa) //11
关于这两者的兼容性问题,可以到这里查看http://kangax.github.io/es5-compat-table/es6/
Node已经支持了const和let关键词,可以这样使用node --harmony
和use strict
。目前一些浏览器还不支持这样的写法,但是利用defs.js这个库可以ES3也支持这个。他的原理就是利用esprima来编译并重写你的代码。比如:
"use strict"; function fn() {const y = 0;for (let x = 0; x < 10; x++) {const y = x * 2;const z = y;}console.log(y); // prints 0 } fn();
经过def.js重新编译之后变成:
"use strict"; function fn() {var y = 0;for (var x = 0; x < 10; x++) {var y$0 = x * 2;var z = y$0;}console.log(y); // prints 0 } fn();
详情可以去https://github.com/olov/defs这里瞅瞅。
本文同步自我的github博客。
转载于:https://www.cnblogs.com/hustskyking/p/ES6-computed-properties.html
ECMAScript 6中的let和const关键词相关推荐
- 详解var、let、const关键词声明变量的区别,以及变量提升、块级作用域的认识等。
首先回顾一下JavaScript中var声明变量的基础知识: • 在使用var关键词声明变量时,变量在函数外则是全局变量,有全局作用域,全局变量在页面关闭后销毁:变量在函数内则是局部变量,作用局部作用 ...
- 什么时候应该在ECMAScript 6中使用Arrow函数?
本文翻译自:When should I use Arrow functions in ECMAScript 6? The question is directed at people who have ...
- 详解ES6中的 let 和const
前 言 JRedu ECMAScript 6 是 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性. ES6 与上一个版本 ES5 的所有不同之处,对涉及的语 ...
- python常量列表_Python中实现常量(Const)功能
python语言本身没有提供const,但实际开发中经常会遇到需要使用const的情形,由于语言本身没有这种支出,因此需要使用一些技巧来实现这一功能 定义const类如下 复制代码 代码如下: imp ...
- python中的const_Python实现Const详解
python语言本身没有提供const,但实际开发中经常会遇到需要使用const的情形,由于语言本身没有这种支出,因此需要使用一些技巧来实现这一功能 定义const类如下 复制代码 代码如下: imp ...
- ECMAScript 6中的Set和Map数据结构
一.Set 基本用法: Set本身是一个构造函数,用来生成Set数据结构.Set函数可以接受一个数组作为参数用来初始化. const arr = new Set([2,2,3,3,4,4,5,8]); ...
- ES6中表达export default const是无效的
问题 如果您是ES6新手,可以参考一下本文--高手请移驾别往! 请先看下面的图形描述: 也就是说,ES6中default后面是不允许跟const关键字的. 分析 上图中表达可以更换成另一种形式,就可以 ...
- 快醒醒,C# 9 中又来了一堆关键词 init,record,with
一:背景 1. 讲故事 .NET5 终于在 2020-08-25 也就是前天发布了第八个预览版,这么多的预览版搞得我都麻木了,接踵而来的就是更多的新特性加入到了 C# 9 中,既然还想呆在这条船上,得 ...
- 高级语言中的关键字:const用法分析
const是constant的缩写,本意是"不变的.不易改变的",它属于c.c++.Java等高级语言中的关键字,通常用来修饰变量对象.函数参数.c或c++指针对象使用. cons ...
最新文章
- mysql2012用户名_mysql2012 代码怎么用
- 路由跟踪工具0trace
- QCon上海2015十大热点
- php mysql-mysqli
- 1043 输出PATest (20分)_23行代码满分
- BZOJ 2956 模积和
- jieba分词_wordcloud词云美化——jieba结巴中文分词(将长句拆分)
- Android使用sqlliteOpenhelper更改数据库的存储路径放到SD卡上
- 《软件工程》 课后思考题
- HJ212国家环保标准的数据上报-专用智能网关IGT-SER
- 邮件服务器搭建 iredmail
- 淘宝新规:售假者严重违规须缴纳100%保证金
- position:fixed;支持ie6,清除e6下抖动。
- .gitignore java web_使.gitignore忽略除少数文件以外的所有内容
- Oracle SQL 批量修改资料库邮箱后缀名称
- DQN:Playing Atari with Deep Reinfocement Learning
- 微信隐藏功能:群接龙
- 河北软件职业技术学院计算机应用工程系,河北软件职业技术学院第四届模特大赛举办成功...
- matlab添加文件夹语音_基于MATLAB的语音处理
- R语言 RStudio快捷键
热门文章
- 下载keep运动软件_我把私教带回了家,Keep智能动感单车体验|钛极客
- p2p网络测试工具_自媒体 IPFS官方升级DHT方案,提升网络整体性能
- 833 计算机学科专业基础综合,2017年西安电子科技大学计算机学院833计算机学科专业基础综合考研仿真模拟题...
- android复制链接到粘贴板,Android复制粘贴到剪贴板
- java 文件分隔符_Java文件分隔符
- python创建excel图表_python使用VBA(8):Excel创建图表(简单)
- python层次聚类分析_SPSS聚类分析:系统聚类分析
- python解码函数_python2和python3的编码encode解码decode函数
- iphone导出照片到电脑_如何更改 iPhone 照片格式?
- 无法打开文件“python310_d.lib”