在阅读 promisify-node 源码的时候, 想看看作者是如何将基本的函数和对象转换为对应的 promised-based API 的。我很快意识到他们通过函数的签名来查找通用的回调参数名称, 如 callback 或者 cb。代码看起来有点古怪但确实很有效。【注: 新一代的JS框架大多采用这种探测策略,如 AngularJS

我写了一个 JavaScrip t函数来解析函数的参数名称, 代码如下:

function getArgs(func) {// 先用正则匹配,取得符合参数模式的字符串.// 第一个分组是这个:  ([^)]*) 非右括号的任意字符var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1];// 用逗号来分隔参数(arguments string).return args.split(",").map(function(arg) {// 去除注释(inline comments)以及空格return arg.replace(/\/\*.*\*\//, "").trim();}).filter(function(arg) {// 确保没有 undefined.return arg;});
}

上面是检测的函数, 示例代码如下:

function myCustomFn(arg1, arg2,arg3) {// ...
}// ["arg1", "arg2", "arg3"]
console.log(getArgs(myCustomFn));

正则表达式(regular expression) 是个好东西吗? 别的我不知道, 但在适当的场景用起来还是很给力的!

附带一个Java取得当前函数名的方法: Java 在函数中获取当前函数的函数名

// 注意: stacktrace里面的位置;
// [1] 是“getMethodName”, [2] 是调用此方法的method
public static String getMethodName() {  StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();  StackTraceElement e = stacktrace[2];  String methodName = e.getMethodName();  return methodName;
}

原文链接: Detect Function Argument Names with JavaScript

原文日期: 2015年10月21日

翻译日期: 2015年10月26日

翻译人员: 铁锚 http://blog.csdn.net/renfufei

JavaScript: 取得 function 的所有参数名相关推荐

  1. JavaScript学习(八十)—请写一段JS程序提取URL中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中

    JavaScript学习(八十)-请写一段JS程序提取URL中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中 题目: 代码:

  2. javascript中 (function(){})();如何理解?

    javascript中 (function(){})();如何理解? javascript中: (function(){})()是匿名函数,主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环 ...

  3. JavaScript学习总结(七)——JavaScript函数(function)

    转载自   JavaScript学习总结(七)--JavaScript函数(function) 一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 ...

  4. 菜鸟教程 之 JavaScript 函数(function)

    From:https://www.runoob.com/js/js-function-definition.html JavaScript 函数定义 JavaScript 使用关键字 function ...

  5. 如何用mshtml获得Javascript中function的返回值[mshtml]

    marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/ ...

  6. javascript/jquery获取地址栏url参数的方法

    本篇文章主要是对javascript/jquery获取地址栏url参数的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 使用jquery获取url以及使用jquery获取url参数是我 ...

  7. JavaScript为事件处理器传递参数 (转)

    首先参考:javascript attachEvent和addEventListener 使用方法 attachEvent方法,为某一事件附加其它的处理事件.(不支持Mozilla系列) addEve ...

  8. php 正则替换url参数,JavaScript正则获取地址栏中参数的方法分享

    这篇文章主要介绍了JavaScript正则获取地址栏中参数的方法,涉及javascript基于正则的字符串截取操作相关实现技巧,需要的朋友可以参考下 本文实例讲述了JavaScript正则获取地址栏中 ...

  9. 谈谈JavaScript中function多重理解

    JavaScript 中的 function 有多重意义.它可能是一个构造器(constructor),承担起对象模板的作用: 可能是对象的方法(method),负责向对象发送消息.还可能是函数,没错 ...

最新文章

  1. python 字符串切割例题_Python字符串及练习题
  2. NLTK学习笔记(二):文本、语料资源和WordNet汇总
  3. kbmmw 的HTTPSmartService入门
  4. 如何使用python numpy中的数组复制
  5. 从程序员到项目经理(二十九):怎样写文档
  6. 最长连续序列—leetcode128
  7. nodejs mysql备份_node.js实现备份mysql数据库功能
  8. SpringCloud(二) 服务注册与发现Eureka
  9. create table as select性能测试
  10. Radware:应用交付向云端扩展
  11. java bytebuffer 读写_java nio bytebuffer文件读写问题
  12. canvas 实现图片局部模糊_Canvas 在高清屏下绘制图片变模糊的解决方法
  13. linux 查看 pub文件夹,linux 文件/目录的属性及权限
  14. JCreator Error : Invalid path
  15. 中国计算机学会推荐国际学术会议和期刊目录
  16. 斐讯k3怎么设置虚拟服务器,斐讯K3路由器功能介绍及使用教程
  17. origin2021绘图软件安装教程
  18. deglitch 技术_fdc2214中文资料-技术参考.pdf
  19. 《Python数据科学手册》—学习笔记
  20. 在安装anaconda3(自带python3.7)和自己安装的python2.7的win10系统中安装pymol

热门文章

  1. How to change the status of Prepayment invoice
  2. 关于winform屏蔽锁
  3. LINUX下的tty,console与串口分析
  4. microscope image 3D reconstruction
  5. 微信跳一跳高分系列四:一个 JAVA 版开源的微信跳一跳辅助工具
  6. WPF 中的 Uri 地址的不同写法
  7. code1167 树网的核
  8. Js里面IF(var)表示什么意思?js中if的写法、含义
  9. 给asterisk1.8.7添加menuselct选项
  10. 深圳php和java,深圳java技术培训学习(Java和PHP区别)