javascript - 如何判断函数是否为空

标签 javascript reflection

我希望能够检查给定函数是否为空。即它的体内什么都没有,eg:

function foo() {}
function iAmEmpty(a) {
    // yep, empty
}

经过一些初步的尝试,我通过使用 toString() 和一些正则表达式得到了一些我认为可能没问题的东西。

function foo(a, b, c) {}

/^function[^{]+\{\s*\}/m.test(foo.toString());  // true

function bar(a, b, c) { var d; }

/^function[^{]+\{\s*\}/m.test(bar.toString());  // false

我只是想知道是否有更好的方法?您看上面的内容有什么问题吗?

最佳答案

这是不可取的。没有标准精确确定函数的 toString() 方法应返回什么,因此即使您在当前的浏览器中实现此功能, future 的浏览器也可能会合理地更改其实现并破坏您的代码。

Kangax 对此进行了简要描述:http://perfectionkills.com/those-tricky-functions/

关于javascript - 如何判断函数是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346186/

相关文章:

javascript - babel (nextjs/webpack) 无法编译类

javascript - ESLint: 8.0.0 加载插件失败 '@typescript-eslint'

javascript - Meteor 显示除当前登录用户之外的所有用户

javascript - Backbone.js:检查数据是否准备好以及数据集是否为空的优雅方式

javascript - 将 Mongoose 文档中的字段设置为数组长度

c# - 为什么方法调用会因参数异常而失败?

c# - 在 C# 中将类成员引用为枚举

Scala - 抽象类型和隐式参数解析

JavaScript 反射 : get variables

Java 反射 getDeclaredMethod(...) 返回 Null