[JavaScript] 动态获取方法参数名

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。 

以下是一些JavaScript的基本特性:

  1. 它是一种解释性脚本语言:这意味着它不需要在被执行之前进行编译。相反,它是在运行时逐行解释和执行的。

  2. 它是基于对象的:在JavaScript中,所有的事物都是对象,包括字符串、数字、数组、日期等等。

  3. 它是事件驱动的:这意味着JavaScript可以在特定事件发生时执行代码,例如,当用户点击一个按钮,当页面加载完成等。

  4. 它是跨平台的:JavaScript可以在多种平台上运行,如Windows、Linux、Mac、iOS和Android等。

  5. 它是安全性的:JavaScript是一种安全性语言,它可以防止通过脚本进行恶意操作。

目录

 1.动态获取方法参数名 

 1.1 演示效果

1.2 代码


 1.动态获取方法参数名 

在JavaScript中,是无法直接获取函数的参数名的。这是因为函数在JavaScript内部被解析为一个调用栈帧,参数名在解析过程中被忽略,所以在运行时是无法获取到参数名的。

 1.1 演示效果

// function 有参数测试
var a = function(x,y){return x+y;}
get_function_params(a)  // (2) ['x', 'y']
// function 单个参数测试
var e = function(x){return x;}
get_function_params(e) // ['x']
// function 无参数测试
var f = function(){return 1;};
get_function_params(f)  // []// lambda 有参数测试
var c = (x,y)=>{return x+y;}
get_function_params(c)  // (2) ['x', 'y']
// lambda 单个参数测试
var d = x=>{return x;}
get_function_params(d)  // ['x']
var v = (x)=>{return x;}
get_function_params(v)  // ['x']
// lambda 无参数测试
var g = ()=>{return 1;}
get_function_params(g);  // []

1.2 代码

参数介绍:

  1. func: 需要获取参数列表的函数。
  • 类型: Function

返回值:

  • 类型: Array
  • 描述: 返回一个包含函数参数名称的数组。如果无法获取参数列表,则返回空数组。
/*** 获取函数的参数列表。* 该函数通过解析函数字符串来获取函数的参数列表。由于JavaScript中函数的多种定义方式,需要通过正则表达式来匹配提取参数。* * @param {Function} func - 需要获取参数列表的函数。* @return {Array} 返回一个包含函数参数名称的数组。如果无法获取参数列表,则返回空数组。*/
function get_function_params(func) {// 使用正则表达式匹配函数定义中的参数部分。let parms = func.toLocaleString().match(/[function ]*\(([a-zA-Z0-9, ]*)\)([=>\{ ])|[function ]*([a-zA-Z0-9]+)[ =>]*/);// 遍历匹配结果,寻找有效的参数字符串。for (let index = 1; index < parms.length; index++) {let element = parms[index];// 如果匹配到有效的参数字符串。if (element||element=='') {element = element.replace(' ', '');// 如果参数字符串包含括=='',返回空参数列表if(element==''){return [];}else if (element.indexOf('(') != -1) { // 如果参数字符串包含括号,说明是带默认值或解构赋值的参数,需要特殊处理。// 移除括号和空格,然后按逗号分割,得到参数列表。return element.replace(')', '').replace('(', '').split(',');}else {// 如果不包含括号,直接移除空格后按逗号分割,得到参数列表。return element.split(',');}}}// 如果匹配结果为空,说明无法获取到有效的参数列表,返回空数组。return [];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Optional类的使用 java8(附代码)

&#x1f370; 个人主页:_小白不加班__ &#x1f35e;文章有不合理的地方请各位大佬指正。 &#x1f349;文章不定期持续更新&#xff0c;如果我的文章对你有帮助➡️ 关注&#x1f64f;&#x1f3fb; 点赞&#x1f44d; 收藏⭐️ 文章目录 一、什么是Optional&#xff1f;二、…

科研绘图系列:R语言和弦图 (Chord diagram)

介绍 和弦图(Chord Diagram)是一种用于展示多个实体之间相互关系的数据可视化方法。它通常用于表示网络或系统中不同节点(实体)之间的连接强度或流量。和弦图由一个圆形布局组成,每个节点在圆周上占据一个扇形区域,节点之间的连接通过圆内的线条(和弦)来表示。 特点:…

linux环境下重新编译opencv的安卓动态链接库opencv_java4.so文件

一、安装java 1.8 #安装依赖 sudo apt-get install python-software-properties sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo add-apt-repository ppa:ts.sch.gr/ppa sudo apt-get update sudo apt-get install oracle-java8-installer 二…

VB中的函数和子程序(Sub)的区别和用法

在VB&#xff08;Visual Basic&#xff09;及其派生语言如VBA&#xff08;Visual Basic for Applications&#xff09;中&#xff0c;函数&#xff08;Function&#xff09;和子程序&#xff08;Sub&#xff09;是两种不同类型的代码块&#xff0c;它们在用途、返回值以及调用方…

前端必知必会-html的id属性和Iframe

文章目录 HTML id 属性类和 ID 之间的区别带有 ID 和链接的 HTML 书签在 JavaScript 中使用 id 属性HTML IframeIframe - 设置高度和宽度Iframe - 删除边框Iframe - 链接的目标总结 HTML id 属性 HTML id 属性用于为 HTML 元素指定唯一 id。id 属性的值在 HTML 文档中必须是唯…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.07.15-2024.07.20

文章目录&#xff5e; 1.SegPoint: Segment Any Point Cloud via Large Language Model2.LLMs as Function Approximators: Terminology, Taxonomy, and Questions for Evaluation3.Scaling Laws with Vocabulary: Larger Models Deserve Larger Vocabularies4.Large Language …

数据结构第七讲:栈和队列OJ题

数据结构第七讲&#xff1a;栈和队列OJ题 1.有效的括号2.用队列实现栈3.用栈实现队列4.设计循环队列 1.有效的括号 链接: OJ题目链接 typedef char StackDataType;typedef struct Stack {StackDataType* arr;//使用一个指针来指向开辟的数组int capacity;//保存数组的空间大…

微信小程序注册及认证

进行了两个小程序的注册及认证&#xff0c;记录一下 首先&#xff0c;注册小程序通常都是给企业注册&#xff0c;有些资料最好事先准备&#xff0c;考虑到认证、备案的审核&#xff0c;以及对公打款需要走公司内的审批等&#xff0c;整个过程可能需要一到两周的时间。 准备工…

【ffmpeg命令入门】获取音视频信息

文章目录 前言使用ffmpeg获取简单的音视频信息输入文件信息文件元数据视频流信息音频流信息 使用ffprobe获取更详细的音视频信息输入文件信息文件元数据视频流信息音频流信息 总结 前言 在处理多媒体文件时&#xff0c;了解文件的详细信息对于调试和优化处理过程至关重要。FFm…

后端面试题日常练-day11 【Java基础】

题目 希望这些选择题能够帮助您进行后端面试的准备&#xff0c;答案在文末 Java中的String和StringBuffer/StringBuilder有何区别&#xff1f; a) String是不可变的&#xff0c;StringBuffer/StringBuilder是可变的 b) String是线程安全的&#xff0c;StringBuffer/StringBuil…

springboot爱宠屋宠物商店管理系统-计算机毕业设计源码52726

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

【机器学习】正规方程的简单介绍以及如何使用Scikit-Learn实现基于正规方程的闭式解线性回归

引言 Scikit-learn 是一个开源的机器学习库&#xff0c;它支持 Python 编程语言。它提供了多种机器学习算法的实现&#xff0c;并用于数据挖掘和数据分析 文章目录 引言一、正规方程的定义二、正规方程的原理三、使用 Scikit-Learn 实现基于正规方程的闭式解线性回归3.1 工具3.…

实验15.多线程调度

简介 实验.多线程调度 内核线程 1.在时钟中断函数中处理中&#xff0c;减少当前线程pcb的tick&#xff0c;tick为0则启动调度2.调度&#xff0c;把当前线程pcb放入就绪对立队尾&#xff0c;把就绪线程队首拿出来执行主要代码 引导 省略内核 list.h #ifndef __LIB_KERNEL_…

Nginx缓存配置实现CDN加速

Nginx缓存配置实现CDN加速 1. 前言2. 配置介绍2.1 proxy_cache_path2.2 proxy_cache2.3 proxy_cache_key2.4 proxy_cache_lock2.5 proxy_cache_lock_timeout2.6 proxy_cache_lock_age2.7 proxy_cache_min_uses2.8 proxy_cache_purge2.9 proxy_cache_valid 3. 强制分片4. 配置示…

【2024最新】 服务器安装Ubuntu20.04 (安装教程、常用命令、故障排查)持续更新中.....

安装教程&#xff08;系统、NVIDIA驱动、CUDA、CUDNN、Pytorch、Timeshift、ToDesk、花生壳&#xff09; 制作U盘启动盘&#xff0c;并安装系统 在MSDN i tell you下载Ubuntu20.04 Desktop 版本&#xff0c;并使用Rufus制作UEFI启动盘&#xff0c;参考UEFI安装Ubuntu使用GPTU…

mysql 的MHA

mysql 的MHA 什么是MHA 高可用模式下的故障切换&#xff0c;基于主从复制。 单点故障和主从复制不能切换的问题。 至少需要3台。 故障切换过程0-30秒。 vip地址&#xff0c;根据vip地址所在的主机&#xff0c;确定主备。 主 vip 备 vip 主和备不是优先确定的&#xff…

文件内容查找-Windows Linux

findstr /s /i /m /c:^huggingface.co^ *.js C盘的js文件内容包含huggingface.co 的文件名 grep "keyword" -r filename

InternLM Linux 基础知识

完成SSH连接与端口映射并运行hello_world.py 创建并运行test.sh文件 使用 VSCODE 远程连接开发机并创建一个conda环境

“pandas”的坑

参考&#xff1a;百度安全验证 本文基于python第三方数据分析库pandas&#xff0c;分享这几天所遇到的3个爬坑的案例&#xff0c;希望对也在爬坑的同学们尽一份绵薄之力&#xff0c;如有错误或者写得不好的地方&#xff0c;烦请指正&#xff0c;谢谢。 01df中startswith的坑 …

led灯什么牌子的质量好?led灯护眼效果好的五款爆品分享

大家在选择led灯的时候&#xff0c;最关心的就是“led灯什么牌子的质量好&#xff1f;”市面上商家推出来的led灯品牌众多&#xff0c;型号以及功能也是令人眼花缭乱的&#xff0c;既然如此&#xff0c;那我们应该如何买到质量过关又好用的led灯呢&#xff1f;接下来我将为大家…