Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Dapatkan Secara Dinamik Nama dan Nilai Parameter Fungsi JavaScript?

Bagaimanakah Saya Boleh Dapatkan Secara Dinamik Nama dan Nilai Parameter Fungsi JavaScript?

Barbara Streisand
Lepaskan: 2024-12-06 10:46:11
asal
217 orang telah melayarinya

How Can I Dynamically Retrieve JavaScript Function Parameter Names and Values?

Cara Mendapatkan Butiran Parameter Fungsi Secara Dinamik dalam JavaScript

Dalam sesetengah senario, mengakses nama parameter dan nilai fungsi secara dinamik menjadi perlu. Artikel ini meneroka penyelesaian yang mantap untuk masalah ini.

Fungsi untuk Mengekstrak Nama Parameter

Fungsi berikut, getParamNames, boleh mengekstrak nama parameter mana-mana fungsi yang disediakan:

var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var ARGUMENT_NAMES = /([^\s,]+)/g;

function getParamNames(func) {
  var fnStr = func.toString().replace(STRIP_COMMENTS, '');
  var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
  if(result === null)
     result = [];
  return result;
}
Salin selepas log masuk

Penggunaan dan Contoh

getParamNames(getParamNames) // returns ['func']
getParamNames(function (a,b,c,d){}) // returns ['a','b','c','d']
getParamNames(function (a,/*b,c,*/d){}) // returns ['a','d']
getParamNames(function (){}) // returns []
Salin selepas log masuk

Nota: Mengendalikan Lalai Parameter

Dengan kemunculan ES6, parameter lalai boleh menghalang fungsi getParamNames. Untuk menangani perkara ini, versi yang dikemas kini disediakan:

var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\'|[^'\r\n])*')|("(?:\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg;
Salin selepas log masuk

Walaupun versi yang dipertingkat ini mengendalikan parameter lalai dalam kebanyakan kes, pengecualian mungkin berlaku.

Mengambil Nilai Parameter

Dalam selain mendapatkan nama parameter, seseorang juga mungkin memerlukan nilai yang sepadan. Ini mudah diakses melalui pembolehubah tempatan argumen, yang boleh ditukar kepada tatasusunan:

var args = Array.prototype.slice.call(arguments);
Salin selepas log masuk

Sebagai alternatif, jika tatasusunan generik tersedia:

var args = Array.slice(arguments);
Salin selepas log masuk

Dengan menggunakan teknik ini, pembangun boleh mengakses parameter dan nilai fungsi secara dinamik untuk pelbagai keperluan dan penyesuaian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Secara Dinamik Nama dan Nilai Parameter Fungsi JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan