繁体   English   中英

为什么我的函数没有Javascript变量的范围?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM