The 有关 JavaScript 块的 MDN 文章 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/block给出这个例子:
var x = 1;
{
var x = 2;
}
alert(x); // outputs 2
如您所见,JavaScript 没有块作用域。那么 JavaScript 中的独立块有什么好的用例吗?
我所说的“独立”是指不与控制流语句配对(if
, for
, while
等)或function
.
ES2015 引入了块作用域let https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let and const https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const,因此独立块对于限制变量的范围 https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx:
{
let privateValue = 'foo';
}
console.log(privateValue); // -> ReferenceError
相比之下var
:
{
var privateValue = 'foo';
}
console.log(privateValue); // -> "foo"
let
and const
在所有主要浏览器的最新版本(包括 IE11)中均已实现。
- let兼容性表 http://kangax.github.io/compat-table/es6/#test-let
- const兼容性表 http://kangax.github.io/compat-table/es6/#test-const
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)