function MyFunc(a){
//Здесь нужно изменить значение переменной
a = 4;
}
function main(){
var a = 3;
MyFunc(a);
//Хочу получить измененное значение переменной a равное 4, возможно?
}
Передача переменной по ссылке в JavaScript
Можно ли передать в функцию переменую по ссылке? Или же придется пользоваться глобальными переменными?
Ситуация:
Код:
Код:
function MyFunc(a){
a = 4;
return a;
}
function main(){
var a = 3;
a = MyFunc(a);
}
a = 4;
return a;
}
function main(){
var a = 3;
a = MyFunc(a);
}
а так не пойдёт? =)
А, положим, работа с массивом? Здесь как быть?
Вдруг:) Обнаружил следующее:
Код:
function MyFunc(a, b){
a[0] = 3;
b = 4;
}
function main(){
var a = new Array();
a[0] = 2;
var b = 3;
MyFunc(a, b);
/*
Функция получает массив по ссылке, переменную по значению:
a[0] на выходе из функции равно 3, b - сохраняет свое прежнее значение и равно 3
*/
}
a[0] = 3;
b = 4;
}
function main(){
var a = new Array();
a[0] = 2;
var b = 3;
MyFunc(a, b);
/*
Функция получает массив по ссылке, переменную по значению:
a[0] на выходе из функции равно 3, b - сохраняет свое прежнее значение и равно 3
*/
}
Тогда возникает вопрос: а явно указать это можно?
Цитата: dominator
Тогда возникает вопрос: а явно указать это можно?
Нет. Переменные в js передаются всегда по значению. Но в отношении объектов есть возможность менять значения свойств. Поэтому можно или переназначать значение переменной (уже предложили выше), или "упаковывать" значение в объект, или делать переменную видимой для нужных функций...
Цитата: Zeroglif
Нет. Переменные в js передаются всегда по значению. Но в отношении объектов есть возможность менять значения свойств. Поэтому можно или переназначать значение переменной (уже предложили выше), или "упаковывать" значение в объект, или делать переменную видимой для нужных функций...
Спасибо. Все ясно, кроме: "упаковывать" значение в объект.
Это как? Если можно - простой пример.
Насколько мне известно, JS не поддерживает классы, как это делает, например, VBS.
Цитата: dominator
Это как?
Ну, это по сути то, что вы сделали с массивом. Значение кладём не в переменную, а в свойство некого объекта, между функциями летает объект, меняется туда-сюда значение его свойства...