【发布时间】:2012-07-31 23:55:09
【问题描述】:
以下代码
'use strict';
function blah() {
if (1 ==21) {
}
else {
var i = 10;
function inner() {
console.log(i);
}
}
}
产生以下错误:
SyntaxError: 在严格模式代码中,函数只能在 顶级或直接在另一个函数中。
如何编写我的函数内部以便它可以访问我的变量“i”?根据严格模式,我需要将函数移到顶部,但此时'i'尚未声明
【问题讨论】:
-
该代码(特别是块内的函数声明)在任何版本的 ECMAScript 中都不是严格有效的。它之所以有效,是因为所有主流浏览器都实现了 ECMAScript 扩展来应对这种特殊情况。
标签: javascript closures