Подтвердить что ты не робот

Можно ли изменить значение параметра функции?

У меня есть одна функция с двумя параметрами, например function (a,b). Я хочу в рамках функции взять значение b и заменить его на c. Я думал о чем-то вроде $(b).replaceWith(c), но это не сработало. Я знаю, что могу создать новую переменную внутри функции с новым значением, но можно ли изменить значение самого b? Это возможно. Или параметры, установленные в камне?

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

function(a,b){

    $('selector').toggle(

        //I want this to gather a value and store it in a variable
        function(){},

        //and I want this to accept the variable and value from the previous function
        function(){}
    )}

Единственный способ, которым я могу это сделать, - добавить параметр c для функции overarching, а затем изменить его с помощью первой функции и передать новое значение ко второй функции.

4b9b3361

Ответ 1

Вы не можете явно передать ссылку в JavaScript; однако если b был объектом, а в вашей функции вы изменили свойство b, изменение будет отражено в области вызова.

Если вам нужно сделать это с помощью примитивов, вам нужно вернуть новое значение:

function increaseB(b) {
    // Or in one line, return b + 1;
    var c = b + 1;
    return c;
}

var b = 3;
b = increaseB(b); // 4

Ответ 2

Вы не можете изменить значение целого или строки в JavaScript НО, вы можете изменить значение атрибутов объекта, например

function change(x){
x.x=2;
}

при вызове

var y = {x:1};
change(y);

сделает y.x = 2;

Ответ 3

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

Есть одна вещь, которую следует отметить о том, как вы помещаете эти вызовы функций в список параметров другой функции. Я не уверен, что порядок выполнения для оценки списка параметров. Возможно, тот, кто знает больше о Javascript, может ответить на этот вопрос. Однако не все языки будут оценивать список параметров слева направо, что означает, что вы можете обнаружить, что вторая функция выполняется до первого. Опять же, я не уверен в порядке выполнения для Javascript, чтобы это не было проблемой.

function(a,b){
    var object_c = {
        c: 10
    };

    $('selector').toggle(

    //send object_c in to gather a value and store it in the "c" field
    function(object_c){},

    //send the same object_c object into the second function
    function(object_c){}
)}

Ответ 4

b = c; // very little is set in stone in javascript

Ответ 5

Вы можете заменить значение:

function myFunc() {
    var a = 1, b = 2, c = 3;

    function changeB(a, b) {
        b = c;
    }

    changeB(a, b);    
}

Ответ 6

Если переменная находится в глобальной области видимости, вы можете установить ее следующим образом:

function modify(name,newVal){
  window[name] = newVal;
}

Затем попробуйте следующее:

var foo = 10;
modify('foo','bar');
console.log(foo); // bar

Ответ 7

Вы имеете в виду:

// fun is Your actual function (a,b)

var actualFunction = fun;

fun = function (a,b){
   var c = 10;
   actualFunction(a,c);
}

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

Я не уверен, что он работает без исключений, но, пожалуйста, попробуйте и сообщите нам.