Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача переменной по ссылке в JavaScript

375
24 июля 2007 года
dominator
199 / / 16.10.2003
Вопрос по JavaScript.
Можно ли передать в функцию переменую по ссылке? Или же придется пользоваться глобальными переменными?
Ситуация:
 
Код:
function MyFunc(a){
   //Здесь нужно изменить значение переменной
   a = 4;
}

function main(){
   var a = 3;
   MyFunc(a);
   //Хочу получить измененное значение переменной a равное 4, возможно?
}
92
24 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
гг.
 
Код:
function MyFunc(a){
   a = 4;
   return a;
}

function main(){
   var a = 3;
   a = MyFunc(a);
}


а так не пойдёт? =)
375
24 июля 2007 года
dominator
199 / / 16.10.2003
Да, для данного примера:)
А, положим, работа с массивом? Здесь как быть?
375
24 июля 2007 года
dominator
199 / / 16.10.2003
Хмм...
Вдруг:) Обнаружил следующее:
Код:
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
   */
   }

Тогда возникает вопрос: а явно указать это можно?
23K
24 июля 2007 года
Zeroglif
6 / / 26.11.2006
Цитата: dominator
Тогда возникает вопрос: а явно указать это можно?


Нет. Переменные в js передаются всегда по значению. Но в отношении объектов есть возможность менять значения свойств. Поэтому можно или переназначать значение переменной (уже предложили выше), или "упаковывать" значение в объект, или делать переменную видимой для нужных функций...

375
24 июля 2007 года
dominator
199 / / 16.10.2003
Цитата: Zeroglif
Нет. Переменные в js передаются всегда по значению. Но в отношении объектов есть возможность менять значения свойств. Поэтому можно или переназначать значение переменной (уже предложили выше), или "упаковывать" значение в объект, или делать переменную видимой для нужных функций...



Спасибо. Все ясно, кроме: "упаковывать" значение в объект.
Это как? Если можно - простой пример.
Насколько мне известно, JS не поддерживает классы, как это делает, например, VBS.

23K
24 июля 2007 года
Zeroglif
6 / / 26.11.2006
Цитата: dominator
Это как?


Ну, это по сути то, что вы сделали с массивом. Значение кладём не в переменную, а в свойство некого объекта, между функциями летает объект, меняется туда-сюда значение его свойства...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог