function sum(num1,num2) {
return num1 + num2;
}
function callSum1(num1,num2) {
return sum.apply(this,arguments);
}
function callSum2(num1,num2) {
return sum.apply(this,[num1,num2]);
}
alert(callSum1(10,10));
alert(callSum2(10,10));
//call()例子就省略了
Soalan:
1.sum.apply(this,arguments) merujuk kepada jumlah objek yang memanggil kaedah apply ini merujuk kepada callSum() dan sum() kedua-duanya berjalan dalam skop yang sama merujuk kepada "sum1, sum2 "?
2 Apakah nilai aplikasi apply() dan call() dalam projek?
Apa yang tertulis di atas memang rumit :)
Dengar saya, apa yang ditanya keliru
1:
PS: Perkara ini tidak boleh ditentukan apabila fungsi ditakrifkan Hanya apabila fungsi itu dilaksanakan, ia boleh ditentukan kepada siapa ini sebenarnya, titik akhir ini adalah objek yang memanggilnya
2. Nilai aplikasi panggilan dan pakai (maksud kewujudan):panggilan menerima parameter berterusan, dan gunakan menerima parameter tatasusunan.
Sebuah portal: http://www.jianshu.com/p/a7b1...A.panggil(ini, a,b,c,d)
A.mohon(ini, [a,b,c,d])
argumen ialah salah satu atribut fungsi terbina dalam, yang mewakili objek tatasusunan fungsi, iaitu, argumen dalam callSum1 merujuk kepada num1 dan num2
https://developer.mozilla.org...
menggunakan dan memanggil ialah ia boleh membuat ini dalam fungsi yang ditentukan menghala ke objek tertentu Sebagai contoh, dom yang kita perolehi menggunakan
document.querySelectorAll()
sebenarnya adalah objek seperti tatasusunan, bukan tatasusunan kaedah tatasusunan , boleh jadi beginiPerbezaan utama antara memohon dan panggilan ialah format parameter saya cadangkan anda menyemak MDN untuk soalan ini.
Untuk 1 keputusan pelaksanaan kedua-duanya kembali
20
20
sum.apply(this,arguments)
merujuk kepada penggunaan apply to call sum Tentukan bahawa ini apabila jumlah dilaksanakan ialah argumen berikut ialah senarai parameter.sum.apply(this,[num1, num2])
Sama seperti di atas.Mengenai hujah, siarkan tangkapan skrin dan anda mungkin mempunyai pemahaman persepsi
Berikut adalah jawapan untuk point kedua
Dipetik sendiri
Lebih mudah difahami, ia adalah untuk menukar penunjuk ini, contohnya, semasa panggilan balik kejayaan permintaan ajax
Sebagai contoh, semasa membangunkan vue, jika tiada fungsi anak panah, anda perlu menggunakan
var that = this
untuk menyimpan ini buat sementara waktu. Jika anda boleh memilih ini, anda tidak akan menghadapi masalah iniBeri saya buah berangan
Tukar objek seperti tatasusunan kepada tatasusunan sebenar
argumen menyimpan senarai parameter fungsi dalam bentuk objek seperti tatasusunan.
Malah, kita boleh lihat dari sini: melaksanakan slice hanya memerlukan objek untuk mempunyai
length
正确的下标
untuk melaksanakan seperti biasa dan mengembalikan hasilnya.Oleh kerana banyak kaedah tatasusunan boleh digunakan pada objek seperti tatasusunan, objek seperti tatasusunan sememangnya boleh dianggap tatasusunan dalam banyak kes.
Anda juga boleh menjadikannya lebih seperti tatasusunan
Objek Sangat Seperti Array
Melaksanakan fungsi separa Fungsi Separa
Serupa dengan fungsi separa dalam matematik, seperti:
fungsi
f(x, y) = x + y
如果令
y = k
那么可以得到偏函数f(x, k) = x + k
( 或者这样可能更好理解:
f(x, 4) = x + 4
)Bind biasanya digunakan untuk melaksanakan fungsi separa. Walau bagaimanapun, memohon, memanggil dan mengikat perlu dibincangkan secara intensif.
Gunakan memohon untuk mencapai perkara di atas
logger
ialah:Fungsi pesanan lebih tinggi dan kari
Fungsi tertib tinggi biasanya merujuk kepada fungsi yang nilai pulangannya ialah fungsi atau parameternya adalah fungsi.
setTimeout
ialah contoh yang baik Ia menerima parameter (biasanya fungsi) dan melaksanakannya selepas kelewatan tertentu.Tetapi selepas memasukkannya, ini biasanya menunjuk ke tetingkap objek global Jika anda ingin menentukan ini, anda perlu menggunakan panggilan memohon dan mengikat
Pencatat2 di atas melakukan ini dan mengembalikan fungsi
Mengenai kari, mari lihat fungsi dahulu
add
Jika parameter boleh dilalui satu persatu, hasilnya akan diperolehi apabila diteruskan ke yang kedua:
Pelaksanaan pertama mengembalikan fungsi Jika tambah dianggap sebagai fungsi dalam pengertian matematik, ia adalah
f(x, y) = x + y
我们执行了一次add(1)
得到add1
其实就是令x = 1
, jadi kita mendapat fungsi separaf(1, y) = 1 + y
Lakukan y untuk kali kedua dan anda akan mendapat nilai sebenar, dan hasilnya boleh dikira menggunakan formula.
Ini sebenarnya adalah proses penyingkiran langkah demi langkah.
Untuk apa?
Saya baru dalam pengaturcaraan berfungsi dan masih belum memahami intipatinya. Satu-satunya kegunaan kari ialah
惰性求值
Operasi tadi tidak akan berjalan sehingga semua parameter diberikan.
Saya berjaga sepanjang malam dan menyemak imbas SF yang saya fikirkan ialah ini. . . .
Set
this
skop secara manual.Anda akan tahu selepas mencari di Baidu.