JavaScript всегда передает аргументы функции «по значению».Это означает, что функция не может изменить то, на что указывает переменная вне функции.
Однако, когда вы передаете объект функции, переданное «значение» является ссылкой на фактический объект, а некопия объекта.Поэтому, хотя вы не можете установить для внешней переменной значение null или другой объект, вы можете изменить содержимое этого объекта.Это означает, что вы можете сделать что-то вроде этого:
var containerObj = {'o' : {'val' : 0} };
f = function(v) {
v.o = null;
};
f(containerObj.o); // This property would be set to null successfully.
Очевидно, что создание группы объектов-контейнеров просто для того, чтобы вы могли передавать их функциям, не очень красиво, но это один из способов сделать это.
Но я бы порекомендовал согласиться с предложением Джеймса Монтаня о том, чтобы функция возвращала объект или значение null и присваивала результат обратно вашей переменной.