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
Barbara Streisandasal
2024-12-06 10:46:11218semak imbas

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;
}

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 []

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;

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);

Sebagai alternatif, jika tatasusunan generik tersedia:

var args = Array.slice(arguments);

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!

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