Est-il possible de modifier la valeur du paramètre de fonction?

J'ai une fonction avec deux paramètres, par exemple la function (a,b) . Je veux dans la fonction, prendre la valeur de b, et le remplacer par c. Je pensais à quelque chose comme $(b).replaceWith(c) , mais cela n'a pas fonctionné. Je sais que je peux créer une nouvelle variable dans la fonction avec la nouvelle valeur, mais est-il possible de changer la valeur de b elle-même? Une telle situation est possible. Ou sont les paramètres mis en pierre?

Permettez-moi d'essayer d'expliquer ce que j'essaie de faire. Il existe trois fonctions, une fonction globale, puis deux fonctions qui sont déclenchées par un événement à bascule. Et je veux que la deuxième fonction fasse quelque chose pour obtenir une valeur et la transmettre à la troisième fonction. Alors voici le code

 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(){} )} 

La seule façon dont je peux penser à cela est d'ajouter un paramètre c pour la fonction globale, puis de le modifier avec la première fonction et de passer la nouvelle valeur à la seconde fonction.

Vous ne pouvez pas passer explicitement par référence en JavaScript; Cependant, si b était un objet, et dans votre fonction, vous modifiez la propriété de b , la modification sera reflétée dans la portée d'appel.

Si vous devez le faire avec des primitives, vous devez retourner la nouvelle valeur:

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

Vous ne pouvez pas modifier la valeur d'un nombre entier ou d'une chaîne dans JavaScript, MAIS, vous pouvez modifier la valeur des attributs d'un objet par exemple

 function change(x){ xx=2; } 

Quand appeler avec

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

Fera yx = 2;

Lorsque vous passez un objet, vous transmettez une référence à cet objet. Donc, lorsque vous modifiez un objet transmis à une fonction, vous modifiez cet objet original. Par conséquent, vous pouvez créer un objet très simple contenant une seule variable qui vous permettra de transférer la valeur d'une fonction à l'autre.

Il y a une chose qui doit être notée sur la façon dont vous mettez ces appels de fonction dans la liste de paramètres d'une autre fonction. Je ne suis pas certain de l'ordre d'exécution pour l'évaluation d'une liste de paramètres. Peut-être quelqu'un qui en sait plus sur Javascript peut répondre à cela. Cependant, toutes les langues n'évalurent pas une liste de paramètres de gauche à droite, ce qui signifie que vous pourriez trouver la deuxième fonction qui s'effectue avant la première. Encore une fois, je ne suis pas certain de l'ordre d'exécution pour Javascript, ce qui peut ne pas être une préoccupation.

 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){} )} 
 b = c; // very little is set in stone in javascript 

Vous pouvez remplacer la valeur:

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

Si la variable est dans la portée globale, vous pouvez la définir comme suit:

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

Ensuite, essayez ceci:

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

Tu veux dire:

 // fun is Your actual function (a,b) var actualFunction = fun; fun = function (a,b){ var c = 10; actualFunction(a,c); } 

Permettez-moi d'expliquer ce qui se passe là-bas: vous créez une variable (currentFunction) et laissez-la tenir un pointeur sur Votre fonction (a, b) (nommé ici "amusant"). Ensuite, vous définissez une nouvelle définition pour "amusement", donc vous appelez l'ancien avec les paramètres que vous aimez.

Je ne suis pas tout à fait sûr si cela fonctionne sans exception, mais essayez-le et faites-le nous savoir.