是否更改Javascript中传递的变量的值而不返回?
我有一个函数change(x),它接受一个整数并改变它的值是否更改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
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
函数证明你错了。