以下代码
'use strict';
function blah() {
if (1 ==21) {
}
else {
var i = 10;
function inner() {
console.log(i);
}
}
}
产生以下错误:
SyntaxError:在严格模式代码中,只能在声明函数 顶级或立即在另一个功能中。
如何编写我的函数内部,以便它可以访问我的变量'i'?根据严格模式,我需要将函数移到顶部,但此时'i'尚未声明
答案 0 :(得分:4)
由于var i
将被提升到function blah
范围的顶部,您可以这样做:
'use strict';
function blah() {
var i;
function inner() {
console.log(i);
}
if (1 ==21) {
}
else {
i = 10;
}
}
答案 1 :(得分:2)
inner()
哪里需要访问?这是否适用于您的目的?:
var inner = function () { ... };
答案 2 :(得分:1)
它已被声明,因为var
声明了整个函数的变量,而不是块。
答案 3 :(得分:1)
必须将内部函数声明为函数表达式,如下所示:
var inner = function () {
console.log(i);
};