私は今、javascript を学んでいます。私には美しい関数型言語のように思えます。PHP からの素晴らしい移行です。もっと早くこれを行うべきでした。ただし、これを理解することはできません:
var v1 = (/[abc]/).test;
v1('a');
はtest method called on incompatible undefined
、その正規表現のテスト メソッドを変数に格納し、後で呼び出すようにしています。
しかし、それは私自身の機能で動作します:
function foo(){
return 'I\'m foo';
}
var f = foo;
f(); // returns I'm foo
とにかく関数は親オブジェクトのメソッドにすぎないので、メソッドでも機能するはずですよね?
最終的に、私がこれを試みている理由は、次のようなものを書くことができるようにするためです:
var a = ['a', 'b', 'c'];
a.every( (/[abc]/).test );
その正規表現に対して各配列メンバーをチェックします。
なぜこれが機能しないのですか?組み込み関数を渡す際の制限ですか? それとも、私は何か間違ったことをしていますか?
PS: 今、歯を食いしばって、悪い習慣について何かをこもらせたり、良い習慣を台無しにしたりするとしたら、私は遊んでいるだけです。しかし、私はそれらについても聞きたいです。