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

And*_*osu 4 javascript function object

有些东西我找不到答案或解释.我们以下面的代码为例:

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

alert(a.value); //a is undefined
Run Code Online (Sandbox Code Playgroud)

a = {value: 10};我们不应该通过该功能吗?

Pra*_*man 6

x是当地的范围.您只传递而不传递引用.所以你可能需要返回并分配如下:

function fn(x){
  x = {value: 10};
  return x;
}
var a;
a = fn(a);
Run Code Online (Sandbox Code Playgroud)

来自一篇很棒的文章:

当通过在像一个字符串或数字基本类型的变量,该值被传递在由值.这意味着函数中对该变量的任何更改都与函数外部发生的任何更改完全分开.

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
Run Code Online (Sandbox Code Playgroud)

在一个对象中传递,但是,将其传递通过引用.在这种情况下,该对象的任何属性都可以在函数中访问.

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
Run Code Online (Sandbox Code Playgroud)