Arkia Arkia - 6 months ago 7
Javascript Question

JavaScript - How/Can I set an object reference to null from a function?

I'm wondering if this is even possible. Basically I have a couple objects that I pass to a function, and under certain conditions I want that function to set the object to null.

Ex.

var o = {'val' : 0};

f = function(v)
{
v = null;
};

f(o); // Would like this to set 'o' to null


Unfortunately it seems I can only set the function's argument to null. After calling the function 'o' will still refer to an object.

So, is it even possible to do this? And if so, how?

Answer

If you want to change the value of o when f(o) is called, you have two options:

1) You can have f(o) return a new value for o and assign that to o like this:

var o = {'val' : 0};
o = f(o);
// o == null

Inside of f(), you return a new value for o.

function f(v) {
    if (whatever) {
        return(null);
    }
}

2) You put o into another object and pass a reference to that container object into f().

function f(v) {
    if (whatever) {
        v.o = null;
    }
}

var c = {};
c.o = 'val' : 0};

f(c);
// c.o == null;

The javascript language does not have true pointers like in C/C++ that let you pass a pointer to a variable and then reach back through that pointer to change the value of that variable from within the function. Instead, you have to do it one of these other two ways. Objects and arrays are passed by reference so you can reach back into the original object from the function.