cari
Rumahhujung hadapan webtutorial jsArgumen: Keanehan JavaScript

3

Takeaways Key arguments: A JavaScript Oddity

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: Keanehan JavaScript

Walaupun batasannya, 'argumen' adalah alat yang berkuasa, yang membolehkan penciptaan fungsi fleksibel yang menerima bilangan argumen yang berubah -ubah, yang boleh ditukar kepada array sebenar menggunakan kaedah array, slice.

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");
Walaupun argumen bukanlah array JavaScript yang sebenarnya, kita dapat dengan mudah menukarnya kepada satu dengan menggunakan kaedah array standard, slice, seperti ini:

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:

Walau bagaimanapun, saya ingin membuat versi khas fungsi itu yang mengulangi 3 kali dengan kelewatan 2 saat antara setiap kali. Dengan fungsi ulangan saya, saya boleh melakukan ini:

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);
    }
  };
}
Hasil memanggil fungsi SomethingWrong adalah kotak amaran yang diulang 3 kali dengan kelewatan 2 saat antara setiap amaran.

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 () { var argsArray = array.from (argumen); Fungsi anak panah. Fungsi anak panah tidak mempunyai objek 'argumen' mereka sendiri. Walau bagaimanapun, mereka boleh mengakses objek 'Argumen' dari fungsi induk yang tidak terdekat. Ia mengembalikan rentetan yang menunjukkan jenis operan yang tidak dielakkan. Sebagai contoh, 'Typeof 3' akan kembali 'nombor', dan 'Typeof "Hello' 'akan kembali' String '. Berikut adalah contoh:

checkArgStype () {

untuk (var i = 0; i console.log (typeof argumen [i]); merujuk kepada hujah pertama yang diserahkan kepada fungsi. Begitu juga, 'argumen [1]' merujuk kepada hujah kedua, dan sebagainya. Sekiranya tiada hujah yang diluluskan, 'Argumen [0]' akan 'tidak ditentukan'. Walau bagaimanapun, ia secara amnya tidak disyorkan kerana ia boleh membawa kepada kod yang mengelirukan dan keras. Dalam mod yang ketat, apa -apa percubaan untuk mengubahsuai objek 'Argumen' akan membuang kesilapan. Ia berguna apabila anda perlu melangkah ke atas hujah -hujah atau menentukan berapa banyak argumen yang diluluskan.

Bolehkah 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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs JavaScript: Bahasa mana yang harus anda pelajari?Python vs JavaScript: Bahasa mana yang harus anda pelajari?May 03, 2025 am 12:10 AM

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Rangka Kerja JavaScript: Menguasai Pembangunan Web ModenRangka Kerja JavaScript: Menguasai Pembangunan Web ModenMay 02, 2025 am 12:04 AM

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Hubungan antara JavaScript, C, dan penyemak imbasHubungan antara JavaScript, C, dan penyemak imbasMay 01, 2025 am 12:06 AM

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Aliran node.js dengan typescriptAliran node.js dengan typescriptApr 30, 2025 am 08:22 AM

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

Python vs JavaScript: Pertimbangan Prestasi dan KecekapanPython vs JavaScript: Pertimbangan Prestasi dan KecekapanApr 30, 2025 am 12:08 AM

Perbezaan prestasi dan kecekapan antara Python dan JavaScript terutamanya dicerminkan dalam: 1) sebagai bahasa yang ditafsirkan, Python berjalan perlahan tetapi mempunyai kecekapan pembangunan yang tinggi dan sesuai untuk pembangunan prototaip pesat; 2) JavaScript adalah terhad kepada benang tunggal dalam penyemak imbas, tetapi I/O multi-threading dan asynchronous boleh digunakan untuk meningkatkan prestasi dalam node.js, dan kedua-duanya mempunyai kelebihan dalam projek sebenar.

Asal JavaScript: Meneroka Bahasa PelaksanaannyaAsal JavaScript: Meneroka Bahasa PelaksanaannyaApr 29, 2025 am 12:51 AM

JavaScript berasal pada tahun 1995 dan dicipta oleh Brandon Ike, dan menyedari bahasa itu menjadi C. 1.C Language menyediakan keupayaan pengaturcaraan prestasi tinggi dan sistem untuk JavaScript. 2. Pengurusan memori JavaScript dan pengoptimuman prestasi bergantung pada bahasa C. 3. Ciri lintas platform bahasa C membantu JavaScript berjalan dengan cekap pada sistem operasi yang berbeza.

Di sebalik tabir: Apa bahasa JavaScript?Di sebalik tabir: Apa bahasa JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

Masa Depan Python dan JavaScript: Trend dan RamalanMasa Depan Python dan JavaScript: Trend dan RamalanApr 27, 2025 am 12:21 AM

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).