Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как получить ссылку на переменную через аргумент функции? (https://javascript.ru/forum/misc/37052-kak-poluchit-ssylku-na-peremennuyu-cherez-argument-funkcii.html)

_dude01 05.04.2013 21:29

как получить ссылку на переменную через аргумент функции?
 
я хочу знать как реализовать это(если возможно конечно):
function change(variable){
    variable = 10 ;
}
var x = 1 ;
change(x) ;
alert(x) ; //выведет 10

но ничего лучше чем это лучше не придумал
function change(variable){
    window[varible] = 10 ;
}
var x = 1 ;
change("x") ;
alert(x) ;//выведет 10

прошу помощи
заранее спасибо

zebra 05.04.2013 21:35

передайте объект или массив

SV0L0CH 05.04.2013 22:08

Для подобного доступа можно использовать функции
function change(changer){
  changer(10);
}
var x = 1;
change(function(arg){x=arg;});
alert(x);

_dude01 05.04.2013 23:56

Цитата:

Сообщение от SV0L0CH (Сообщение 244469)
Для подобного доступа можно использовать функции
function change(changer){
  changer(10);
}
var x = 1;
change(function(arg){x=arg;});
alert(x);

это не сработает поскольку значение переменной изменяется только в функции ,снаружи она не меняется

megaupload 06.04.2013 00:26

Используй объект тебе сказали, примитивные типы данных передаются в функцию значением, которое тупо копируется, а объекты передаются ссылками на оригинал объекта. Передай в функцию ссылку на объект.

var obj = {x:20};

function change (object){
      object.x = 11;
}

alert(obj.x); //20
change(obj);
alert(obj.x); //11

danik.js 06.04.2013 05:57

_dude01, не понимаешь в чем-то? Проверь прежде чем утверждать!

function change(changer){
  changer(10);
}
var x = 1;
change(function(arg){x=arg;});
alert(x);

SV0L0CH 06.04.2013 11:45

Давно мечтаю о сахаре для такого:
var x;
function setX(_){x=_;}
function getX(){return x;}
function accessX(_){
  if(arguments.length)
    x=_;
  return x;
}

megaupload 06.04.2013 12:23

SV0L0CH,
сеттеры и геттеры не , не слышал?

_dude01 06.04.2013 12:32

в JS в них нет смысла

_dude01 06.04.2013 12:40

Цитата:

Сообщение от danik.js (Сообщение 244498)
_dude01, не понимаешь в чем-то? Проверь прежде чем утверждать!

function change(changer){
  changer(10);
}
var x = 1;
change(function(arg){x=arg;});
alert(x);

в этом просто нет смысла
тоже само что и
function change(arg) {
    x = arg;
}
var x = 1 ;
change(10) ;
alert(x) ;


Часовой пояс GMT +3, время: 06:29.