Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么全局变量在调用函数增加后保持不变?_Javascript - Fatal编程技术网

Javascript 为什么全局变量在调用函数增加后保持不变?

Javascript 为什么全局变量在调用函数增加后保持不变?,javascript,Javascript,为什么调用增量函数后全局变量仍然是5?提前感谢您的帮助 <script> function increment(val) { val+=1; } var val = 5; increment(val); alert(val); </script> 函数增量(val){ val+=1; } var=5; 增量(val); 警报(val); 声明函数的本地变量val。您可以更改局部变量,而不是外部变量。这和 function increment(val2)

为什么调用增量函数后全局变量仍然是5?提前感谢您的帮助

<script>
function increment(val) {
  val+=1;
}

var val = 5;

increment(val); 

alert(val);

</script>

函数增量(val){
val+=1;
}
var=5;
增量(val);
警报(val);
声明函数的本地变量
val
。您可以更改局部变量,而不是外部变量。这和

function increment(val2) {
  val2+=1;
}
您可以这样做:

function increment(val) {
  return val+1;
}
var val=5;
val = increment(val); 

声明函数的本地变量
val
。您可以更改局部变量,而不是外部变量。这和

function increment(val2) {
  val2+=1;
}
您可以这样做:

function increment(val) {
  return val+1;
}
var val=5;
val = increment(val); 


这是因为Javascript中的基本变量是通过值传递的,而不是通过引用传递的

当传入字符串或数字之类的基元类型变量时, 该值由值传入。这意味着,对其进行任何更改 函数中的变量与任何内容完全分离 这发生在函数之外

有关此主题的更多信息,请查看此精彩博客:
这是因为Javascript中的基本变量是通过值传递的,而不是通过引用传递的

当传入字符串或数字之类的基元类型变量时, 该值由值传入。这意味着,对其进行任何更改 函数中的变量与任何内容完全分离 这发生在函数之外

有关此主题的更多信息,请查看此精彩博客:
您不需要通过全局VAR。 当您将参数传递给函数时,它将创建valriable的本地副本。因此,如果您想从函数中影响全局变量,那么在调用函数时不要传递它,因为您可以访问全局变量,而无需传递

<script>
function increment() {
  val+=1;
}

var val = 5;

increment(); 

alert(val);

函数增量(){
val+=1;
}
var=5;
增量();
警报(val);


请注意,在定义
increment()
函数时,已将参数指定为
**val**
。因此,在函数中,对
val
的每个引用都是针对这个局部参数的。如果要访问实际全局变量,请使用
window.val

不需要传递全局变量。 当您将参数传递给函数时,它将创建valriable的本地副本。因此,如果您想从函数中影响全局变量,那么在调用函数时不要传递它,因为您可以访问全局变量,而无需传递

<script>
function increment() {
  val+=1;
}

var val = 5;

increment(); 

alert(val);

函数增量(){
val+=1;
}
var=5;
增量();
警报(val);


请注意,在定义
increment()
函数时,已将参数指定为
**val**
。因此,在函数中,对
val
的每个引用都是针对这个局部参数的。如果要访问实际全局变量,请使用
window.val

它是一个全局变量,因此不传递任何内容并直接在函数内部使用全局变量也是一个选项。@AnthonyGrist是的,但我想函数中没有任何意义,这就是为什么我没有提出它的原因。它是一个全局变量,所以不传递任何东西,直接在函数内部使用全局也是一种选择。@AnthonyGrist是的,但我想在函数中没有意义,这就是为什么我没有提出它。