JavaScript如何检测指定函数体是否为空?

4 min read

好的,以下是检测指定函数体是否为空的 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() 方法移除这些字符后再判断长度是否为零。