如果在运行时使用 eval 在 javascript 中进行条件评估

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)