我希望能够检查给定函数是否为空。即它的体内什么都没有,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/