cari

Rumah  >  Soal Jawab  >  teks badan

javascript - nilai objek 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]);
    };//没值,不报错
    

Apakah perbezaan antara kedua-dua ini, dan apakah sebab untuk situasi di atas?

天蓬老师天蓬老师2796 hari yang lalu698

membalas semua(6)saya akan balas

  • 黄舟

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

    Adakah anda pasti anda tidak melaporkan ralat? Semak maklumat konsol
    obj.arr[i] Panggilan ini salah
    obj.arr tidak wujud, ia sama dengan undefined
    undefined[i] Ralat pasti akan berlaku


    Pertama sekali, kedua-dua obj dan arr boleh menggunakan kaedah [] untuk mendapatkan nilai:
    Perbezaan antara dua kaedah dalam contoh ini ialah:
    obj[arr[i]] mula-mula mengambil arr[i] dan kemudian menyerahkannya kepada obj[]:

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

    obj.arr.[i] ialah mendapatkan obj.arr dahulu, dan kemudian dapatkan [i] melalui obj.arr:

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

    balas
    0
  • 淡淡烟草味

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

    Pengendali kurungan segi empat sama boleh menggunakan kandungan pembolehubah rentetan sebagai nama atribut. Operator titik tidak boleh.

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

    balas
    0
  • 巴扎黑

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

    Satu ialah objek dan satu lagi ialah tatasusunan, iaitu dua struktur data yang sama sekali berbeza

    Anda boleh menggunakannya untuk melintasi objek

    for (var i in obj) {
        console.log(obj[i])
    }

    Mengenai sebab anda mengatakan tiada ralat dilaporkan kemudian, ia adalah kerana tiga ungkapan gelung for (tiga dipisahkan dengan koma bertitik), obj.length tidak ditentukan dan palsu, jadi gelung tidak akan bermula , anda juga boleh memberikan obj Cuba tambah panjang pada objek, dan kitaran akan bermula

    balas
    0
  • 阿神

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

    Rakan, ralat telah dilaporkan...

    Sebabnya:
    Gunakan obj[] untuk menukar rentetan masuk kepada nama atribut, iaitu:
    obj['name']==obj.name kembali true
    Dan Sintaks titik obj.'name' tidak akan ditukar secara automatik kepada obj.name, iaitu:
    obj.'name'==obj.name error
    Saya tidak tahu sama ada saya faham dengan betul.. .

    balas
    0
  • 过去多啦不再A梦

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

    Ia pasti akan melaporkan ralat, keutamaan pengendali

    balas
    0
  • 为情所困

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

    Bersarang dari dalam ke luar
    Rantai dari kiri ke kanan
    Ayat ni betul!

    balas
    0
  • Batalbalas