【问题标题】:Changing global Variable from within function从函数内部更改全局变量
【发布时间】:2025-11-28 03:40:01
【问题描述】:

我对我编写的这个非常简单的脚本有点问题。该脚本的目的是在每次单击按钮时简单地将给定数字减一。我似乎无法做到这一点.. 我的全局变量 Number=100 似乎没有改变,或者改变不止一次.. 抱歉不能很好地解释这一点。 这是我正在处理的部分..:

<script>
  var Number = 100;        // Number i want changed and to keep changing each button click
  function outcome() {     // Button calls this function
    Number = Number - 1;   // Tries to change Global Number.. :/
  }
  document.write(Number);  // Has the Number written in the document
</script> 

【问题讨论】:

  • 你没有调用你的函数
  • 以下两个答案都是正确的。调用函数并停止使用受保护的关键字作为变量名,它将起作用。
  • 我刚刚格式化了您的代码并在需要的地方添加了分号。

标签: javascript function global increment


【解决方案1】:

是的,从概念上讲这是正确的。只有您没有调用该函数,至少在将Number 写入文档之前不会。

顺便说一句,Number 是对Number constructor 的全局引用,因此您应该使用另一个变量名,最好是小写。

var num = 100;
function outcome() {
    num--;
}
outcome();
document.write(num); // 99

<script>
var num = 100;
function outcome() {
    num--;
    alert(num);
}
</script>
<button onclick="outcome()">Decrease!</button>

(Demo at jsfiddle.net)

【讨论】:

  • 全局Number是可写的。
  • @thesystem:是吗?哦,确实如此。现已修复。
  • 人们会认为它不会是这样,但随后就会忘记我们在谈论 JavaScript。 ;-)
  • @DarrylChapman:那么你不应该使用document.write()。这意味着在页面加载时使用......而不是在它已经加载之后。
  • 我正在使用按钮调用我的函数。我已经使用 num 作为变量等对代码进行了一些调整,但是它只更改了一次变量,它提醒我 99,如果我再次单击该按钮,它会再次出现 99。
【解决方案2】:

你必须调用你的函数:

<script>
var Number=100    
function outcome(){ 
Number=Number-1 
}
outcome(); // call the function here
document.write(Number)  
</script> 

或者一开始就不要使用函数:

<script>
var Number=100    
Number=Number-1   
document.write(Number) 
</script> 

【讨论】:

    最近更新 更多