如何在函数内将未定义的变量转换为对象

How to turn an undefined var to an object, inside a function

本文关键字:变量 转换 对象 未定义 函数      更新时间:2023-09-26

有些事情我找不到答案或解释。让我们以以下代码为例:

function fn(x){
  x = {value: 10};
}
var a;
fn(a);
alert(a.value); //a is undefined

当我们通过该函数传递它时,不应该a = {value: 10};吗?

x是本地范围的。您只传递而不传递引用。因此,您可能需要像这样返回和分配

function fn(x){
  x = {value: 10};
  return x;
}
var a;
a = fn(a);

来自一篇很棒的文章:

传入基元类型变量(如字符串或数字(时,值按值传入。这意味着在函数中对该变量的任何更改都与函数外部发生的任何更改完全分开。

function myfunction(x)
{
    // x is equal to 4
    x = 5;
    // x is now equal to 5
}
var x = 4;
alert(x); // x is equal to 4
myfunction(x); 
alert(x); // x is still equal to 4

但是,传入对象时,会通过引用传入对象。在这种情况下,可以在函数中访问该对象的任何属性。

function myobject()
{
    this.value = 5;
}
var o = new myobject();
alert(o.value); // o.value = 5
function objectchanger(fnc)
{
    fnc.value = 6;
}
objectchanger(o);
alert(o.value); // o.value is now equal to 6