Est-il possible de modifier la valeur du paramètre de la fonction?
J'ai une fonction à deux paramètres, par exemple function (a,b)
. Je veux à l'intérieur de la fonction, la valeur de b, et remplacez la par c. Je pensais à quelque chose comme $(b).replaceWith(c)
, mais ça 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 modifier la valeur de b lui-même? Est quelque chose comme cela possible. Ou sont les paramètres fixés dans la pierre?
Laissez-moi vous expliquer ce que je suis en train de faire. Il y a trois fonctions, l'une globale de la fonction, puis deux fonctions qui sont déclenchées par bascule de l'événement. Et je veux que la deuxième fonction de faire quelque chose pour obtenir une valeur et de le transmettre à la troisième fonction. Donc, ici, serait 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 que je peux penser de le faire est d'ajouter un paramètre c pour la principale fonction de, puis le modifier avec la première fonction et la nouvelle valeur de passer à la deuxième fonction.
- Ce n'est pas de travail?!?!
var value_b = b; b = c;
? - Est-ce un général JavaScript question ou est-il rien de jQuery spécifique qui n'a pas été mentionné?
- bien que son général javascript/jquery/variable de portée de la question, je suppose
- Vous pouvez modifier la valeur d'un paramètre où vous le voulez, mais le moins déroutant chose à faire ici, serait d'introduire un
var c;
dans votre fonction externe et de les manipuler à partir de vos fonctions intérieures. Si je comprends bien, vous l'avez explicitement ne voulez pas le faire. Pourquoi?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas passer explicitement par référence en JavaScript; toutefois, si
b
agissait d'un objet, et dans votre fonction vous avez modifiéb
's bien, le changement pourra être répercuté dans le contexte appelant.Si vous avez besoin de le faire avec des primitives, vous devez renvoyer la nouvelle valeur:
$(b).replaceWith(c)
ne fonctionne pasNumber.isInteger()
, pasNumber.prototype.isInteger
. Vous POUVEZ utiliser le nouveau mot-clé et le Numéro de l'objet, mais je ne pense pas que beaucoup de programmeurs serait de trouver une raison à cela quand ils le peuvent simplement utiliser le littéral.Vous ne pouvez pas modifier la valeur d'un entier ou une chaîne de caractères en JavaScript MAIS vous pouvez modifier la valeur des attributs d'un objet par exemple
lors de l'appel avec
va y faire.x = 2;
Lors du passage d'un objet, vous êtes de passage à une référence à cet objet. Donc, lors de la modification d'un objet qui a été passé dans une fonction vous êtes la modification de l'objet d'origine. Par conséquent, vous pouvez créer un objet très simple contenant une seule variable qui va vous permettre de réaliser de la valeur autour d'une fonction à l'autre.
Il y a une chose qui doit être noté sur la façon dont vous mettez ces appels de fonction dans la liste paramètre d'une autre fonction. Je ne suis pas certain de ce que l'ordre d'exécution est de l'évaluation d'une liste de paramètres. Peut-être quelqu'un qui en sait plus à propos de Javascript de répondre à cette question. Cependant, toutes les langues ne permettra d'évaluer un paramètre de la liste de la gauche vers la droite, ce qui signifie que vous pouvez trouver à la deuxième fonction est exécuté avant que le premier. Encore une fois cependant, je ne suis pas certain de l'ordre de l'exécution de Javascript, de sorte que ne peut pas être un sujet de préoccupation.
Si la variable est dans la portée globale, vous pouvez la définir comme suit:
Ensuite, essayez ceci:
window
est utilisé dans le navigateur web JavaScript seulement, mais d'autres JavaScript environnements différents équivalents. Par exemple,global
est l'node.js l'équivalent.Vous pouvez remplacer la valeur:
Voulez-Vous dire:
Laissez-moi vous expliquer ce qui se passe onhere: Vous êtes à la création d'une variable (actualFunction), et laissez maintenez le pointeur de Votre fonction(a,b) (nommé ici "fun"). Ensuite, Vous configurez une nouvelle définition pour le "fun" donc, c'est l'appel de l'ancien avec les paramètres que Vous souhaitez.
Je ne suis pas tout à fait sûr si il fonctionner sans exceptions, mais s'il vous plaît essayez-le et laissez-nous savoir.