recherche

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

javascript - valeur de l'objet js

  var obj ={
        name:'nnn',
        age:22,
        job:'worker'
    };
  
    var arr=[
        'name',
        'age',
        'job'
    ];

    for (var i=0 ;i<arr.length;i++){
        document.writeln(arr[i]+':'+obj[arr[i]]);
    };//有值
     for (var i=0 ;i<arr.length;i++){
        document.writeln(arr[i]+':'+obj.arr[i]);
    };//没值,不报错
    

Quelle est la différence entre ces deux-là et quelle est la raison de la situation ci-dessus, aidez-moi à la comprendre ?

天蓬老师天蓬老师2752 Il y a quelques jours681

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

  • 黄舟

    黄舟2017-05-19 10:35:49

    Êtes-vous sûr de ne pas signaler une erreur ? Vérifiez les informations de la console
    obj.arr[i] Cet appel est erroné
    obj.arr n'existe pas, il est égal à undefined
    undefined[i] Une erreur se produira certainement


    Tout d'abord, obj et arr peuvent utiliser la méthode [] pour obtenir des valeurs :
    La différence entre les deux méthodes dans cet exemple est :
    obj[arr[i]] prend d'abord arr[i] puis l'assigne à obj[]:

    arr[i]==> 'name' ==> obj['name'] ==> 取值成功
    

    obj.arr.[i] consiste à obtenir obj.arr en premier, puis à obtenir [i] via obj.arr :

    obj.arr==> undefined ==> undefined[i] ==> 报错
    嵌套的由内而外
    链式由左往右

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:35:49

    L'opérateur crochet peut utiliser le contenu d'une variable chaîne comme nom d'attribut. L'opérateur point ne le peut pas.

    var a={
        name:1
    }
    var str="name";
    console.log(a[str])//1
    console.log(a.str)//undefined

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:35:49

    L'un est un objet et l'autre est un tableau, qui sont deux structures de données complètement différentes

    Vous pouvez utiliser

    pour parcourir des objets
    for (var i in obj) {
        console.log(obj[i])
    }

    Quant à la raison pour laquelle vous avez dit qu'aucune erreur n'est signalée plus tard, c'est à cause des trois expressions de la boucle for (les trois séparées par des points-virgules), obj.length est indéfini et faux, donc la boucle ne démarrera pas . De plus, vous pouvez également essayer d'ajouter une longueur à l'objet obj, et le cycle commencera

    .

    répondre
    0
  • 阿神

    阿神2017-05-19 10:35:49

    Ami, une erreur a été signalée...

    La raison est :
    Utilisez obj[] pour convertir la chaîne entrante en nom d'attribut, c'est-à-dire :
    obj['name']==obj.name renvoie vrai
    Et la syntaxe par points de obj.'name' ne sera pas automatiquement convertie en obj.name, c'est-à-dire :
    obj.'name'==obj.name erreur
    Je ne sais pas si je comprends bien.. .

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:35:49

    Il signalera certainement une erreur, priorité de l'opérateur

    répondre
    0
  • 为情所困

    为情所困2017-05-19 10:35:49

    Imbriqué de l'intérieur vers l'extérieur
    Enchaîné de gauche à droite
    C'est vrai !

    répondre
    0
  • Annulerrépondre