1 行プログラミングに関する簡単な質問があります。最初の例:
function test(a)
{
var b=a.toString();
return b.replace("a","b");
}
これは非常に単純です (もちろん、この関数は役に立ちません) が、ここでの質問はもう少し複雑です: これを 1 行で行うとしたらどうなるでしょうか? 私は自分の考えを持っていますが、メモリのクリーンアップに関してこれが適切に機能することを教えてください:
function test(a)
{
return (arguments[1]=a.toString()).doSomething().doSomethingMore(arguments[1]);
}
もちろん、これは一例ですが、考え方は簡単です。引数をローカル変数のコンテナーとして使用します。よくわかりませんが、関数が終了すると、引数も削除されますか? または、引数に新しい要素を作成すると、この要素がグローバルに定義されますか? 私のテストから、私は正しいようですが、誰かがこれを試したかどうか知りたいですか? これは安全でクリーンな解決策ですか?:) コメントありがとうございます。
以下は、1 行のスクリプトの問題に関するより現実的な問題です。
function (number,limiter)
{
return ((arguments[2] = number.toString().replace(
new RegExp("(\\d+)(\\d{3})($|"+limiter+")"),
'$1'+limiter+'$2$3')) == number) ?
arguments[2] :
arguments.callee(arguments[2],limiter);
}
この1行の関数は、指定された文字列で処理を行い、それを返すか、同じ関数に再帰的に解析します。(他のスレッドでは、再帰なしでこれを行う方法を示していますが、これは問題ではありません)。