Jika anda ingin mengetahui tujuan kod anda dan fungsi arguments.callee, anda boleh mula-mula ikuti saya dan ubah suai kod anda dua kali, lihat kesannya, dan ringkaskan sendiri, kemudian lihat penjelasan kasar
Kaedah 1
Tambah baris kod: alert(1); dan tambahkan kurungan lain selepas fn() yang dipanggil [tukar kepada fn()() ], akhirnya sebagai: alert(1); 并在调用的fn()后面再添加一个括号[ 改为fn()() ],最终如:
function f()
{
alert(1);
return arguments.callee();
}
f()();
function f()
{
alert(1);
return arguments.callee;
}
f();
↑↓等价于
function f()
{
alert(1);
return function f(){
alert(1);
};
}
f();
Kaedah 2🎜
🎜Tambah baris kod: alert(1);, dan tukar arguments.callee; kepada arguments.callee();, akhirnya sebagai berikut: 🎜
rrreee
🎜Penjelasan🎜
🎜argumen ialah objek terbina dalam JS dan wujud dalam mana-mana fungsi [fungsi], manakala pemanggil ialah kaedah dalam objek argumen yang menunjuk kepada ontologi fungsi yang memanggilnya Ini bermakna ia bersamaan dengan f, memanggil callee adalah sama dengan memanggil f sekali lagi, callee kebanyakannya digunakan dalam fungsi tanpa nama, seperti: 🎜
rrreee
Mengenai kembali
🎜Pemulangan di sini adalah untuk mengembalikan keseluruhan fungsi itu sendiri·f Melalui penjelasan di atas, anda boleh mengetahui bahawa arguments.callee di sini adalah bersamaan dengan f, seperti sebagai: 🎜
rrreee
arguments.callee adalah fungsi ini Nampaknya ES6 tidak lagi disyorkan.
Kod soalan adalah bersamaan dengan
Mengembalikan fungsi badan itu sendiri
Jika anda ingin mengetahui tujuan kod anda dan fungsi arguments.callee, anda boleh mula-mula ikuti saya dan ubah suai kod anda dua kali, lihat kesannya, dan ringkaskan sendiri, kemudian lihat penjelasan kasar
Kaedah 1
Tambah baris kod:
alert(1);
dan tambahkan kurungan lain selepasfn()
yang dipanggil [tukar kepadafn()()
], akhirnya sebagai:alert(1);
并在调用的fn()
后面再添加一个括号[ 改为fn()()
],最终如:方法二
增加一行代码:
alert(1);
,并将arguments.callee;
改为arguments.callee();
,最终如下:关于
return
这里的return就是返回整个函数本身·f
Kaedah 2🎜 🎜Tambah baris kod:通过上面的解释你可以知道这里的
arguments.callee
就等同于f
alert(1);
, dan tukararguments.callee;
kepadaarguments.callee();
, akhirnya sebagai berikut: 🎜 rrreee rrreeeMengenai
🎜Pemulangan di sini adalah untuk mengembalikan keseluruhan fungsi itu sendiri·fkembali
Melalui penjelasan di atas, anda boleh mengetahui bahawa
arguments.callee
di sini adalah bersamaan denganf
, seperti sebagai: 🎜 rrreeeRalat melaporkan dalam mod ketat. Menggunakan ini tidak disyorkan.