为什么这个变量超出了范围,JavaScript

Why this variable go out of scope, JavaScript?

本文关键字:范围 JavaScript 变量 为什么      更新时间:2023-09-26
function foo(){
    var bar = 0;
    $("#dummy").click(function(){
          bar += 1;
     })
}

我以为bar在函数foo内部,所以它总是可以调用的。但是,错误消息是变量栏未定义。有人能解释一下原因吗?

这并没有超出范围。您正在一个函数中定义您的点击处理程序,因此您必须调用该函数才能发生任何事情,但除此之外,您发布的代码并没有说明为什么会出现该错误。

下面是一个例子(我删除了jQuery(:

<button>Add one</button>
<div>bar is: <span id="barCount">0<div></div>
function foo(){
  var bar = 0;
  document.querySelector("button").onclick = function(){
    bar += 1;
    document.querySelector("#barCount").innerHTML = bar;
  };
}
foo();

Fiddle