Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment attribuer une valeur à une variable en dehors d'une fonction à l'intérieur d'une fonction?


Comme ci-dessus, g ne peut pas se voir attribuer une nouvelle valeur. Je souhaite écrire une fonction fn qui peut attribuer arbitrairement des valeurs à des variables externes

.

Les exigences réelles sont comme ci-dessus, je souhaite attribuer les variables instanciées à l'extérieur

淡淡烟草味淡淡烟草味2709 Il y a quelques jours2618

répondre à tous(5)je répondrai

  • PHPz

    PHPz2017-05-19 10:41:36

    Un concept que l'interrogateur n'a pas compris est le problème de la transmission des paramètres de fonction.

    var g = 1;
    function fn(a){a=2;}
    fn(g);
    g//1 
    //我是分割线
    var g = {a:1};
    function fn(b){b.a=2;}
    fn(g);
    g//{a:2} 

    Lorsque des variables externes sont transmises à des fonctions en tant que paramètres, vous devez comprendre deux situations : l'une est le type de données de base et l'autre est l'objet.

    Lorsque les paramètres sont des types de données de base, les paramètres de la fonction sont transmis par valeur, c'est-à-dire que la valeur est copiée dans le paramètre. La façon dont la fonction modifie la valeur du paramètre n'est qu'une modification de la copie du paramètre réel, qui. n'affectera pas l'ontologie. Comme indiqué dans votre capture d'écran.

    Lorsque le paramètre est un objet, je pense en fait qu'il s'agit d'un transfert de valeur, mais ce qui est transmis est la valeur de l'adresse de référence de l'objet. La fonction indexe en interne l'adresse de l'objet de référence sur l'objet de données réel, puis modifie les attributs dans. l'objet. C'est une situation qui affectera le monde extérieur.

    D'une manière générale, si vous souhaitez attribuer une valeur à une variable externe. Autant ne pas transmettre les variables en paramètres, mais effectuer le traitement directement dans le corps de la fonction.

    var g;
    function fn(){
       g = 1;
    }
    fn();
    g//1

    Selon les règles de recherche des variables de fonction, recherchez d'abord si la variable a g dans le corps d'exécution actuel. Si elle ne la trouve pas dans la couche externe, cela signifie que la variable n'a pas été définie ou déclarée.

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:41:36

    Le passage des paramètres de fonction Javascript consiste uniquement à « transmettre des valeurs ».

    Une façon plus raisonnable de l'écrire est

    var g;
    function fn() {
        return 33
    }
    g = fn();
    

    Manière déraisonnable d'écrire

    var g;
    function fn() {
        g = 33;
    }
    fn();
    

    La troisième raison pour laquelle cette dernière est déraisonnable est que le degré de couplage est trop élevé.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:41:36

    var g;
    function fn(){
        g = '32';
    }
    fn();

    Cela peut faire ce dont vous avez besoin, mais vous en voulez probablement un universel, n'est-ce pas ?

    你可以选择这样:
    var g;
    function fn(){
        return '32';
    }
    g = fn();

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-19 10:41:36

    // a 为变量名字
    function fn(a){
        window[a] = '32'
    }

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:41:36

    var g;
    function fn(valeur){
    g = valeur;
    }
    fn(1);
    g//1#🎜🎜 #

    répondre
    0
  • Annulerrépondre