Pot.js と PotLite.js で利用可能。
関数 func が return 文を持っているかチェックします。
引数の関数 func が return 文を持ち、実行すると最終的に return されて返るかどうか調べます。
func が文字列で与えられると、それをコードみなしチェックします。
この関数は、たんに return があるかどうか調べるわけではなく、
JavaScript として解析したうえで、関数の最初のブロック直下で return により返されるかをチェックします。
関数 func を実行するわけでありません。
任意のユーザー定義関数が return されるものかどうか調べたいときなどに便利になります。
func が return されるなら true を返し、そうでない場合 false を返します。
var func = function() { return 'hoge'; }; debug(hasReturn(func)); // true
var func = function() { var hoge = 1; }; debug(hasReturn(func)); // false
var func = function return_test(return1, return$2) { // dummy comment: return 'hoge'; var $return = 'return(1)' ? (function(a) { if (a) { return true; } return false; })(/return true/) : "return false"; }; debug(hasReturn(func)); // false
var func = function() { if (1) { return (function() { return 'hoge'; })(); } }; debug(hasReturn(func)); // true
// E4X が利用できる環境での例 var func = function() { // return 'hoge'; var e1 = <>return</>; var e2 = <><![CDATA[ return 1; ]]></>; var e3 = <> <div data={(function() { return 'hoge'; })()}> return 1; </div></>; var e4 = <><!--</>-->return 1;</>; var re = /<><!--[\/]--><\/>/gim; var e5 = <root><hoge fuga={(function() { return 1; })()} piyo="<root>"> <root>return</root>return;<!--</root>"<root>"-->return; <!--return--> </hoge></root>; var root = "</root>"; var r = 'return(1)' ? (function(a) { if (a) { return true; } return false; })(/return true/) : "return false"; }; debug(hasReturn(func)); // false