1. const(声明一个只读的常量)

这个是很好理解的,且声明时就必须赋值而不能以后再赋,不然会报错。

而个人认为它最大的用处还是在于 {} 和 [] 上,const 保证了它的内存地址(指针)不变(非数据不可变)。(但这点现在浏览器好像还未统一)

var TEST = {};
TEST.xx = 'x'; // 可执行
TEST = {x: 'x'}; // 重新赋值则不可行

另外注意,我们推荐常量所用名称最好全为大写字母。

2. let (申明块级作用域变量)

var a = [];
for(let i=0; i<1; i++) {
a[i] = function(){console.log(i)}
if (true) {
let i = 'x';
}
console.log(i); // 打印数字而不是 'x'
}
a[0](); // 使用 let 打印 0,使用 var 打印 5。

以上即为 let 的典型特征,块级作用域内有效。

2.5 块级作用域

怎样才叫一个区块呢,function / for / if,以及哪怕两个中括号中间的都是一个独立的块级。

注意,同一区块内不能出现相同变量名的声明,否则会报错。

内层可访问外层块级,外层不能访问内层新申明的变量,因此 IIFE 写法不再有必要:

// IIFE 写法
(function () {
var a = 'x';
}()); // 块级作用域写法
{
let a = 'x';
}

此外,let 和 const 不同于 var 还在于,var 会优先声明,而 ES6 不能再这样做了。

a = 'x';
var a;
console.log(a); // x b = 'x';
let b ;
console.log(b); // 报错

另外,函数声明在 ES6 的块级作用域是个奇葩,而且浏览器对此的实现还没有统一,不做讨论

// 浏览器的 ES6 环境
function fn() { console.log('I am outside!'); }
(function () {
if (false) {
function fn() { console.log('I am inside!'); }
}
f(); // f is not a function
}());

以上,便是 let 和 const 的说明,

在此强烈推荐使用这两个命令,它们有着 var 无法拥有的特性,

应当用 let 完全取代 var;无需重新赋值的对象和数组多使用 const。

本文部分转载自 阮一峰 的 ECMAScript 6 入门

最新文章

  1. struts1二:基本环境搭建
  2. BZOJ2933:POI1999地图
  3. iOS常用公共方法
  4. 安装phpmyadmin
  5. 【转】linux之mkfs/mke2fs格式化
  6. git 笔记记录
  7. Android imageView图片按比例缩放
  8. [ACM] POJ 3259 Wormholes (bellman-ford最短路径,推断是否存在负权回路)
  9. 将Excel文件数据导入到SqlServer数据库的三种方案
  10. JS操作iframe元素
  11. 控制页面打印的2种方法(css3的media媒体查询和window.print())
  12. mongoose的基本操作方法
  13. 论文阅读笔记三十八:Deformable Convolutional Networks(ECCV2017)
  14. linux脚本实现scp命令自动输入密码和yes/no等确认信息
  15. 用原型封装一个操作DOM的例子
  16. 希尔排序Shell sort
  17. POJ1958 Strange Towers of Hanoi [递推]
  18. Win7机器上安装Ubuntu 14.0.4
  19. ZoomControls控件是一个可以缩放控件,可以实现两个按钮控制图片的大小
  20. 与Python的初次见面

热门文章

  1. Python 字典初始化dict()和{}
  2. Unix OpenCV安装
  3. PHP基础面试题(1-10)
  4. ABAP小白的成长日记--------helloblog
  5. ubuntu 16.04 系统语言汉化
  6. CodeForces 450A 队列
  7. phpstorm将多个int数字拼接成字符串
  8. 【转】开发者应该了解的API技术清单
  9. 《从零开始学Swift》学习笔记(Day 22)——闭包那些事儿!
  10. 母版页改变被嵌套的页面中的控件ID的解决方法