【问题标题】: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