好的,以下是检测指定函数体是否为空的 JavaScript 方法:
function isFunctionBodyEmpty(fn) {
const functionBody = fn.toString().match(/[^{]*{\s*([\s\S]*)\s*}$/)[1];
return functionBody.trim().length === 0;
}
这个方法的参数 fn
是要检测的目标函数,例如:
function sayHello() {
console.log('Hello!');
}
function doSomething() {
}
对于 sayHello
这个函数,isFunctionBodyEmpty(sayHello)
的返回值为 false
,因为函数体不为空;对于 doSomething
这个函数,isFunctionBodyEmpty(doSomething)
的返回值为 true
,因为函数体为空。
实现这个方法的思路是将函数转换成字符串,然后使用正则表达式匹配出函数体,最后判断函数体字符串是否为空。需要注意的是,函数体可能带有一些空格、换行符等无关紧要的字符,因此通过 trim()
方法移除这些字符后再判断长度是否为零。