[英]Why Doesn't My Function Have Scope Of The Javascript Variables?
我正在努力使自己了解有关范围/披露的内容。
我已经设置了一个index.html,其中有一个通过<script>
插入的app.js
这些功能可以通过<button onclick="increment();>"...
index.html
<body>
<script src="app.js" type="text/javascript"></script>
<button onclick="increment();"></button>
<h2 id="number"></h2>
</body>
app.js
let total = 0;
function increment() {
total += 1;
document.getElementById('number').innerHTML = total;
}
setTimeout(() => {
console.log('total is: ', total);
}, 5000)
因此,上面的方案A具有在html中调用时增加let total...
。 然后将其发布在h2标签/ html中。 这很好。 超时可以测试5秒钟后,确实是let total...
变量增加了(我想知道我是否正在函数内创建全局变量)。
方案B调用一个函数( startGame()
总传递本身调用增量功能),但这不起作用 。 为什么会失去总数的范围?
app.js
let total = 0;
function startGame() {
console.log('game has started');
increment(total);
console.log('game has finished');
}
function increment(tot) {
tot += 1;
document.getElementById('number').innerHTML = tot;
}
setTimeout(() => {
console.log('total is: ', total);
}, 5000)
方案B调用了一个函数
startGame()
,该函数本身调用带有传入的total的增量函数,但这不起作用。
这与它无关。
为什么会失去总数的范围?
因为您已经更改了increment
功能。 您不再增加全局total
变量,而是增加了声明为参数的局部tot
变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.