找不到这个特定问题的答案。 我有以下内容:
的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 。
答案 0 :(得分:2)
这是因为variable hoisting
。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var
基本上匿名函数中的新var
被提升到函数的顶部,创建一个新的var inc
。
这个新变量没有值,因此inc + 1变为未定义+ 1,即NAN
。
要解决此问题,您需要做的只是从函数内部删除var
关键字,这将使inc
变量名称引用全局范围。
答案 1 :(得分:0)
现在我发现我不应该在函数中使用 var inc ,因为它已经在全局范围内使用了。