recherche

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

javascript - Les objets sont-ils définis sans utiliser var dans les fonctions js comme objets locaux ?

L'objet qui n'est pas défini à l'aide de var dans la fonction doit être un objet global.
À la page P71 du Petit Livre Rouge, quand il est dit que obj est réécrit en interne dans la fonction, cette référence d'objet devient un objet local I. je ne comprends pas~~

typechotypecho2721 Il y a quelques jours921

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

  • PHP中文网

    PHP中文网2017-06-14 10:55:31

    J'ai spécialement sorti mon petit livre rouge. Cette section parle du passage des paramètres par valeur ; ensuite, les objets sont passés par valeur, et ce qui est passé est le pointeur vers l'emplacement de l'objet. Ainsi, dans un premier temps, il est facile de comprendre s'il existe un attribut « nom » de « chen ».
    Parce que obj est un paramètre de la fonction, sa signification réelle se trouve dans la fonction. Lorsque var了一个obj,后期,函数执行完,就会被销毁。可能你看了后面的执行环境和作用域好理解一点。然后,obj = new Object() , la valeur de obj n'est pas le pointeur de l'objet personne d'origine.
    Bien sûr, si vous remplacez la deuxième ligne de code par 'obj1', vous aurez l'effet de la déclaration globale que vous avez mentionnée. (Répondez à la question très sérieusement)

    répondre
    0
  • 欧阳克

    欧阳克2017-06-14 10:55:31

    Ce que vous écrivez dans la fonction que vous définissez ainsi n'est qu'un paramètre formel, pas un paramètre réel, encore moins des paramètres globaux et locaux. . . . . . . . . . . . . .

    répondre
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-14 10:55:31

    obj est un paramètre

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-14 10:55:31

    Après avoir lu les réponses de référence données par les internautes, j'y ai réfléchi un moment, et je comprends à peu près si c'est vrai ou pas, mais je pense que j'en suis assez proche !
    Les paramètres de toutes les fonctions dans ECMAScript sont passés par valeur
    Ainsi, lorsque l'objet personne est passé à setName() en tant que paramètre réel, le pointeur de l'objet personne est copié dans setName()
    Supposons que le pointeur d'origine vers la personne l'objet est le numéro un, le pointeur après la copie est le numéro deux
    Ces deux pointeurs pointent vers l'objet personne en même temps
    Ainsi, lorsque obj.name="chen" est exécuté dans la fonction, un attribut name sera ajouté au objet personne selon le pointeur numéro deux
    Mais lors de l'exécution de When obj=new Object();, le deuxième pointeur pointera vers un nouvel objet au lieu de l'objet personne d'origine
    Ainsi, lorsque obj.name="long"; l'attribut name de l'objet personne ne sera pas modifié
    console .log(person.name); renverra "chen"
    et obj est un paramètre formel, pas un paramètre réel. Il n'y a pas de distinction globale ou locale. détruit après l'exécution de la fonction, c'est-à-dire qu'il n'y a plus de pointeur numéro deux. Il n'y a plus de pointeur vers l'attribut de nom "long".

    répondre
    0
  • Annulerrépondre