gre*_*pow 27 javascript function
function derp() { a(); b(); c(); }
Run Code Online (Sandbox Code Playgroud)
derp.toString()将返回"function derp() { a(); b(); c(); }",但我只需要函数的主体,因此"a(); b(); c();",因为我可以评估表达式.是否可以以跨浏览器的方式执行此操作?
div*_*ero 41
var entire = derp.toString();
var body = entire.slice(entire.indexOf("{") + 1, entire.lastIndexOf("}"));
console.log(body); // "a(); b(); c();"
Run Code Online (Sandbox Code Playgroud)
请使用搜索,这是此问题的副本
当然,因为你想要第一个{和最后一个之间的文字}:
derp.toString().replace(/^[^{]*{\s*/,'').replace(/\s*}[^}]*$/,'');
Run Code Online (Sandbox Code Playgroud)
请注意,我将替换分解为正则表达式而不是覆盖整个事物的一个正则表达式(.replace(/^[^{]*{\s*([\d\D]*)\s*}[^}]*$/,'$1')),因为它的内存密集程度要低得多.