Sur*_*shi 5 javascript scope eval
var y = 1;
if (function f(){}) {
y += typeof f;
}
console.log(y);
Run Code Online (Sandbox Code Playgroud)
此代码的输出是1undefined。我知道在运行时if使用 using 评估语句中的条件的原因eval,但我不明白为什么它不输出1function.
Ste*_*son -1
在您的示例中,该函数的作用域仅位于语句测试条件的括号内if。
请尝试以下操作:
var y = 1;
var f = function() { };
if (f) {
y += typeof f;
}
console.log(y)Run Code Online (Sandbox Code Playgroud)
如果函数指针是在外部定义的,则可以在 if 测试中定义该函数。
var y = 1;
var f = null;
if (f = function() { }) {
y += typeof f;
}
console.log(y)Run Code Online (Sandbox Code Playgroud)