jQuery函数无法访问全局范围

时间:2015-08-11 20:16:55

标签: javascript jquery scope

找不到这个特定问题的答案。 我有以下内容:

的index.html

<input class="btn btn-primary btn-md" type="button" value="check">

的script.js

var inc = 0;

$("input[type='button']").click(function() {
    console.log('pressed');
    console.log(inc);
    var inc = inc + 1; 
})

控制台日志:

pressed 
NaN

我认为函数可以访问全局范围, inc 在全局范围内声明,因此应记录 0

2 个答案:

答案 0 :(得分:2)

这是因为variable hoistinghttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

基本上匿名函数中的新var被提升到函数的顶部,创建一个新的var inc

这个新变量没有值,因此inc + 1变为未定义+ 1,即NAN

要解决此问题,您需要做的只是从函数内部删除var关键字,这将使inc变量名称引用全局范围。

答案 1 :(得分:0)

现在我发现我不应该在函数中使用 var inc ,因为它已经在全局范围内使用了。