私はかなり前からWebのプログラミングを行ってきましたが、関数の使用と、関数を使用して実行できる奇妙な(または私がそれらを見る)ことに関して、いくつかの新しい複雑さを発見したのはつい最近のことです。ただし、現時点では、構文的にはきれいなものにすぎないようです。私は、これらの新しく発見された側面のいくつかがどのように役立つかについて誰かが私に教えてくれることを望んでいました。
たとえば、これを初めて実行したときは、確実に機能しないと思いました。
<script>
function x(q)
{
q(x);
}
x(function(a)
{
alert(a);
}
);
</script>
しかし、それはしました!どういうわけか、唯一のパラメーターとして別の無名関数を受け取り、パラメーターとして渡された関数を実行する名前付き関数を作成すると、問題なく機能します。これは前向きに私の心を吹き飛ばし、それにはかなりの実用性があるとほぼ確信していますが、私はまだそれを完全に配置することはできません。
ああ、そして私が発見したもう1つのことは、グローバルスコープの変数を使用して関数を格納し、後でJavaScriptのeval()関数を使用してその変数を変更し、関数の内部動作を動的に変更できることです。例:
<script>
var f = function()
{
alert('old text');
}
eval('f = ' + f.toString().replace('old text', 'new text'));
f();
</script>
案の定、そのコードは「新しいテキスト」文字列に警告します。それを見たとき、私の心は再び吹き飛ばされましたが、信じられないほどの何かを生み出す可能性についてもすぐに興味をそそられました。
だから...スタックオーバーフローについての私の燃える質問:そのような一見抽象的なコーディングの原則をどのように前向きな方法で使用することができますか?