【发布时间】:2014-04-14 00:32:50
【问题描述】:
我想知道 ES6 中的let 和const 有什么区别。它们都是块作用域,如以下代码中的示例:
const PI = 3.14;
console.log(PI);
PI = 3;
console.log(PI);
const PI = 4;
console.log(PI);
var PI = 5;
console.log(PI);
在 ES5 中,输出将是:
3.14
3.14
3.14
3.14
但在 ES6 中它将是:
3.14
3
4
5
我想知道为什么 ES6 允许const 值的变化,问题是为什么我们现在应该使用'const'?我们可以用'let'代替吗?
注意:jsbin可用于测试,选择JavaScript运行ES5代码和Traceur使用 ES6 功能运行它。
【问题讨论】:
-
规范仍在开发中,更不用说实现了。如果您重新定义 const,我的 chrome;32.0.* 将保持沉默,但它保持不变。你是如何测试你的代码的?
-
我不确定 ESMAScript6 术语,但在其他语言中,这不会算作“const 值的更改[ing]”,它会 shadow 与不同的绑定。
-
@iccthedral: I JSBin -> 选择 Javascript 来运行 ECMAScript5 代码和 Traceur 来使用 ECMAScript6 功能运行它。
-
可能显示 Traceur 生成的代码 - 可能它有问题。请注意,如果严格实现,您的示例根本不会在 ES5 中运行,因此您只是体验到当前浏览器对
const的支持——例如,某些浏览器只是将 at 视为var。
标签: javascript ecmascript-5 ecmascript-6