Argumen: Keanehan JavaScript
3
Takeaways Key
Argumen 'adalah objek tempatan, seperti array yang terdapat di dalam setiap fungsi JavaScript, yang mengandungi semua argumen yang dibekalkan kepada fungsi apabila ia dipanggil. Ia bukan array yang benar, kerana ia tidak mempunyai kaedah array standard seperti Push and Pop.
Argumen 'juga mempunyai harta' Callee 'yang mengandungi rujukan kepada fungsi yang mencipta objek' Argumen ', yang membolehkan fungsi tanpa nama untuk merujuk kepada dirinya sendiri. Ini boleh digunakan untuk mewujudkan fungsi rujukan sendiri dan fungsi dengan argumen pratetap.
- Argumen adalah nama objek tempatan, seperti array yang terdapat di dalam setiap fungsi. Ia unik, sering diabaikan, tetapi sumber pengaturcaraan banyak pengaturcaraan; Semua perpustakaan utama JavaScript memanfaatkan kuasa objek Argumen. Ia adalah sesuatu yang setiap pengaturcara JavaScript harus menjadi biasa.
- Di dalam mana -mana fungsi anda boleh mengaksesnya melalui pembolehubah: argumen, dan ia mengandungi pelbagai argumen yang dibekalkan kepada fungsi apabila ia dipanggil. Ia sebenarnya bukan pelbagai JavaScript; Typeof Argumen akan mengembalikan nilai: "Objek". Anda boleh mengakses nilai argumen individu melalui indeks array, dan ia mempunyai harta panjang seperti tatasusunan lain, tetapi ia tidak mempunyai kaedah array standard seperti push and pop.
- Buat fungsi fleksibel
Walaupun ia mungkin kelihatan terhad, hujah adalah objek yang sangat berguna. Sebagai contoh, anda boleh membuat fungsi yang menerima bilangan argumen yang berubah -ubah. Fungsi format, yang terdapat di Perpustakaan Base2 oleh Dean Edwards, menunjukkan fleksibiliti ini:
Anda membekalkan rentetan templat, di mana anda menambah pemegang tempat untuk nilai menggunakan %1 hingga %9, dan kemudian membekalkan sehingga 9 argumen lain yang mewakili rentetan untuk dimasukkan. Contohnya:
kod di atas akan mengembalikan rentetan "dan kertas ingin tahu baju yang anda pakai".
Satu perkara yang mungkin anda perhatikan ialah, dalam definisi fungsi untuk format, kami hanya menetapkan satu hujah: String. JavaScript membolehkan kita lulus beberapa argumen ke fungsi, tanpa mengira definisi fungsi, dan objek argumen mempunyai akses kepada mereka semua.
function format(string) { var args = arguments; var pattern = new RegExp("%([1-" + arguments.length + "])", "g"); return String(string).replace(pattern, function(match, index) { return args[index]; }); };
menukarnya ke array sebenar
format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");
Args pembolehubah kini akan mengandungi objek array JavaScript yang sesuai yang mengandungi semua nilai dari objek argumen.
Buat fungsi dengan argumen pratetap
Objek Argumen membolehkan kita melakukan segala macam helah JavaScript. Berikut adalah definisi untuk fungsi Makefunc. Fungsi ini membolehkan anda membekalkan rujukan fungsi dan bilangan argumen untuk fungsi tersebut. Ia akan mengembalikan fungsi tanpa nama yang memanggil fungsi yang anda tentukan, dan membekalkan argumen pratetap bersama -sama dengan sebarang argumen baru yang dibekalkan apabila fungsi tanpa nama dipanggil:
function format(string) { var args = arguments; var pattern = new RegExp("%([1-" + arguments.length + "])", "g"); return String(string).replace(pattern, function(match, index) { return args[index]; }); };
Hujah pertama yang dibekalkan kepada Makefunc dianggap sebagai rujukan kepada fungsi yang anda ingin panggil (ya, tidak ada ralat pemeriksaan dalam contoh mudah ini) dan ia dikeluarkan dari argumen argumen. Makefunc kemudian mengembalikan fungsi tanpa nama yang menggunakan kaedah penerapan objek fungsi untuk memanggil fungsi yang ditentukan.
hujah pertama untuk memohon merujuk kepada skop fungsi akan dipanggil; Pada dasarnya apa kata kunci yang akan dirujuk di dalam fungsi yang dipanggil. Itu agak maju buat masa ini, jadi kami hanya menyimpannya. Hujah kedua adalah pelbagai nilai yang akan ditukar kepada objek Argumen untuk fungsi tersebut. Makefunc menyambungkan pelbagai nilai asal ke pelbagai argumen yang dibekalkan kepada fungsi tanpa nama dan membekalkannya kepada fungsi yang dipanggil.
Katakan ada mesej yang anda perlukan untuk mengeluarkan di mana templat selalu sama. Untuk menjimatkan anda dari selalu perlu mengutip templat setiap kali anda memanggil fungsi format, anda boleh menggunakan fungsi utiliti Makefunc untuk mengembalikan fungsi yang akan memanggil format untuk anda dan mengisi argumen templat secara automatik:
format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");
anda boleh memanggil fungsi majortom berulang kali seperti ini:
var args = Array.prototype.slice.call(arguments);
Setiap kali anda memanggil fungsi Majortom ia memanggil fungsi format dengan hujah pertama, templat, sudah diisi. Panggilan di atas kembali:
function makeFunc() { var args = Array.prototype.slice.call(arguments); var func = args.shift(); return function() { return func.apply(null, args.concat(Array.prototype.slice.call(arguments))); }; }
Buat fungsi rujukan diri
Anda mungkin berfikir yang cukup keren, tetapi tunggu, hujah -hujah mempunyai satu lagi kejutan; Ia mempunyai satu lagi harta yang berguna: Callee. Argumen.Callee mengandungi rujukan kepada fungsi yang mencipta objek Argumen. Bagaimana kita boleh menggunakan perkara sedemikian? argumen.callee adalah cara yang berguna fungsi tanpa nama dapat merujuk kepada dirinya sendiri.
var majorTom = makeFunc(format, "This is Major Tom to ground control. I'm %1.");
majorTom("stepping through the door"); majorTom("floating in a most peculiar way");
"This is Major Tom to ground control. I'm stepping through the door." "This is Major Tom to ground control. I'm floating in a most peculiar way."
repeat is a function that takes a function reference, and 2 numbers. The first number is how many times to call the function and the second represents the delay, in milliseconds, between each call. Here's the definition for repeat:
function repeat(fn, times, delay) { return function() { if(times-- > 0) { fn.apply(null, arguments); var args = Array.prototype.slice.call(arguments); var self = arguments.callee; setTimeout(function(){self.apply(null,args)}, delay); } }; }
function format(string) { var args = arguments; var pattern = new RegExp("%([1-" + arguments.length + "])", "g"); return String(string).replace(pattern, function(match, index) { return args[index]; }); };
soalan yang sering ditanya mengenai argumen JavaScript
Apakah objek 'Argumen' dalam JavaScript? Ia mengandungi struktur seperti array dengan semua argumen yang diserahkan kepada fungsi. Objek ini berguna apabila fungsi perlu mengendalikan nombor argumen yang berubah -ubah. Adalah penting untuk diperhatikan bahawa objek 'argumen' bukanlah array sebenar, tetapi ia boleh ditukar kepada seseorang jika diperlukan. Walau bagaimanapun, anda boleh mengubahnya menjadi array menggunakan kaedah Array.From () atau pengendali penyebaran (...). Berikut adalah contoh:
fungsi converArgStoArray () {
checkArgStype () {
untuk (var i = 0; iBolehkah saya menggunakan objek 'Argumen' dengan parameter lalai dalam JavaScript?
Ya, tetapi dengan kaveat. Sekiranya fungsi dengan parameter lalai dipanggil dengan argumen yang lebih sedikit daripada terdapat parameter, objek 'argumen' hanya akan mengandungi argumen sebenar yang diluluskan, bukan nilai lalai. Harta ini ditutup dan tidak boleh digunakan dalam kod baru. Sebaliknya, anda boleh menggunakan ekspresi fungsi bernama atau fungsi anak panah.
Atas ialah kandungan terperinci Argumen: Keanehan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing
