Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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_Pass By Reference - Fatal编程技术网

是否更改Javascript中传递的变量的值而不返回?

是否更改Javascript中传递的变量的值而不返回?,javascript,pass-by-reference,Javascript,Pass By Reference,我有一个函数change(x),它接受一个整数并改变它的值 function change(x) { x=26; } window.onload=function(){ var a = 10; change(a); console.log(a); } 然后我做了一个变量,试图改变它的值 function change(x) { x=26; } window.onload=function(){ var a = 10; change(a); c

我有一个函数change(x),它接受一个整数并改变它的值

function change(x) {
   x=26;
}
window.onload=function(){
   var a = 10;
   change(a);
   console.log(a);
}
然后我做了一个变量,试图改变它的值

function change(x) {
   x=26;
}
window.onload=function(){
   var a = 10;
   change(a);
   console.log(a);
}
a没有像我预料的那样改变。在JavaScript中,不使用return就可以用简单的方式实现这种行为吗?我宁愿避免对象和全局

这是我的全部代码:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
   <script>
   function change(x) {
      x=26;
   }
   window.onload=function(){
      var a = 10;
      change(a);
      console.log(a);
   }
   </script>
</body>
</html>

功能改变(x){
x=26;
}
window.onload=function(){
var a=10;
更改(a);
控制台日志(a);
}

JavaScript总是按值传递参数,因此您不能像最初编写的那样进行传递


但是,对象的值是引用,因此可以使用对象


然而,对于这个用例来说,这会让人困惑。您应该让该函数返回转换后的数字。

您不能像那样(或根本不能)通过引用传递变量。您可以传递对象并修改其属性:

function change(obj) {
    obj.a = 4;
}

var obj = {a: 0};
change(obj);

// obj.a is "4" now

我这样做了,它成功了:

function change(x) {   
  x=26;  
  return x;  
}  
  window.onload=function(){  
  var a = 10;  
  console.log(change(a));  
}

希望它有帮助

是的,
a=change(a)检查这个答案:问题是我的“change”函数中有一个回调函数,因此我无法返回值。“那么我得到了‘未定义’。@Pithikos你应该使用回调函数。“但是,对象的值是一个引用”你的意思是,变量的值是一个引用,它指向一个对象。在
窗口的末尾添加一个
console.log(a)
。onload
函数证明你错了。