Rumah  >  Soal Jawab  >  teks badan

javascript - soalan panggilan

Dalam "The Definitive Guide to JavaScript" terdapat fungsi yang digunakan untuk melaksanakan Array.prototype.map:

var map = function(a,f){
    var results = [];
    for(var i = 0,l = a.length; i<l; i++){
        if(i in a){
            results[i] = f.call(null,a[i],i,a);//这里
        }
    }
    return results;
};

Kenapa guna call(null)而不是直接使用f(a[i], i, a)? Dengan cara ini, ini semua menunjukkan keadaan keseluruhan

PHP中文网PHP中文网2687 hari yang lalu671

membalas semua(2)saya akan balas

  • PHP中文网

    PHP中文网2017-05-19 10:46:24

    Anda boleh melihat bahawa peta yang dilaksanakan di sini adalah dalam bentuk ini, iaitu peta(array, f), yang hanya boleh dipanggil dengan dua parameter
    Mari kita lihat semula prototaip fungsi yang diberikan pada MDN,

    .

    const new_array = arr.map(panggilan balik[, thisArg])

    panggilan balik ialah apa yang kita panggil f, jadi yang terakhir ini adalah pilihan, dan fungsi yang disediakan dalam buku tidak mengambil kira nilai ini sama sekali, maka apabila nilai ini tidak diluluskan, Jika parameter Arg ini ditinggalkan, atau nilainya ditetapkan Jika ia adalah batal atau tidak ditentukan, ini menunjukkan kepada objek global.
    Selain itu, kita tahu bahawa apabila menggunakan kaedah panggilan objek fungsi,

    Jika fungsi ini dalam mod tidak ketat, nilai ini yang dinyatakan sebagai null dan undefined akan secara automatik menghala ke objek global (objek tetingkap dalam penyemak imbas), dan nilai ini akan menjadi nilai asal (nombor, rentetan, Nilai Boolean) Objek pembalut automatik yang akan menunjuk kepada nilai asal.

    Ringkasnya, dalam satu ayat, untuk mensimulasikan sepenuhnya sifat fungsi peta~

    balas
    0
  • 滿天的星座

    滿天的星座2017-05-19 10:46:24

    /q/10...

    balas
    0
  • Batalbalas