【问题标题】:How to turn an undefined var to an object, inside a function如何在函数内部将未定义的 var 转换为对象
【发布时间】:2016-05-08 02:12:31
【问题描述】:

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

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

alert(a.value); //a is undefined

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

【问题讨论】:

标签: javascript function object


【解决方案1】:

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

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

来自awesome article

当传入像字符串或数字这样的原始类型变量时,值是按值传入的。这意味着在函数中对该变量的任何更改都与函数外部发生的任何事情完全分开。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2014-02-15
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多