我試圖找到JavaScript函數的名稱和插入下面的代碼JavaScript的正則表達式操作的功能
var functionName = arguments.callee.toString().substr('function '.length);
functionName = functionName .substr(0,functionName .indexOf('('));
console.log(functionName);
這將函數的名稱寫到控制檯,因爲它的調用。我沒有太多運氣。我一直想的這個變種sed.exe:
sed "{/function/ s/$/\var ownName = arguments.callee.toString().substr('function '.length);ownName = ownName.substr(0,ownName.indexOf('('));console.log(ownName);/}" *.js
這只是在格式sed "/elephant/ s/$/\&castle" *.js
任何人有任何想法如何,我可以送什麼我追加到下一行,而比在功能相同的線?另外,我怎樣才能避免以下(但在sed.exe中)以避免匿名函數和eval函數?
grep -Eho "^s*function w+" *.js | sort
感謝您的幫助。
要注意的是'#功能不toString' ** **不返回一定的功能(ESP無法在手機上的瀏覽器),也從未被標準化的字符串版本。另外請注意,在某些瀏覽器上使用'arguments.callee'會顯着降低您的代碼*。 (大幅度提高10倍)。只要您意識到問題,就可以使用調試工具。 – 2011-02-25 23:08:12
請記住,JavaScript太複雜,無法用正則表達式完美解析,儘管您可以想出一些「足夠好」的工作。 – 2011-02-25 23:10:43