次のようなことが可能かどうか知りたいです。
var f = function;
jsキーワードf
のように使用するよりもfunction
このようなことが可能であれば、jsコードの最小化に使用します。コードには多くの機能があります。
次のようなことが可能かどうか知りたいです。
var f = function;
jsキーワードf
のように使用するよりもfunction
このようなことが可能であれば、jsコードの最小化に使用します。コードには多くの機能があります。
Pointyがコメントで指摘したのと同様に、関数コンストラクターを使用して新しい関数を作成し、それを文字列として渡すことができます。言い換えると:
function f(s) { return new Function(s) };
var foo = f('var s = "hello"; return s');
alert(foo()); //=> "hello"
しかし、繰り返しになりますが、これは不要だと思います。
編集:パラメータを追加するには、arguments
オブジェクトを使用します。
function f() {
var args = Array.prototype.slice.call(arguments);
var func = args.pop();
return new Function(args.join(','), func);
}
var add = f('a,b', 'return a + b');
あなたが説明するようにすることはできません。
私が考えることができる最も近いのは、渡された文字列を解析するためにevalを使用して、関数を生成するための関数を作成することです。ただし、evalを使用することは一般的に悪であり、避ける必要があります。全体として、私はこのようなことをまったくお勧めしません。
また、ネットワーク経由で送信されるJavaScriptを最初に圧縮する必要があるため、単語の長さに関係なく、単語関数は1つのトークンで表されるため、やりたいことを実行する意味はほとんどありません。
ソースコードをより読みやすく簡潔にしたい場合は、javascriptにコンパイルされ、関数の最初の文字を使用せずに関数を定義できるコーヒースクリプトをお勧めします。チャックノリスは承認するでしょう!
ここでの重要な問題は、gzipで圧縮した後、単語のサイズfunction
が無関係になることです。したがって、残っている唯一の問題は、ソースコードの読みやすさです。
ええ...正直なところ、関数のキーワードを「f」に短縮しようとしても心配する必要はありません。これにより、作業にほとんど戻ることができず、コードの可読性も損なわれます。そして、あなたが百万の機能のようなものを持っていない限り、私はそれに焦点を合わせません。@prodigitalsonが言ったように、ミニファイアを実行します。これにより、コードで可能な実際の縮小が処理され、コードベースでの可読性が維持されます(これは、数バイトを節約するよりも重要です)。
また、私のコメントによると、長い「関数」キーワードを置き換える途中に(潜在的に)何かがあります(ブレンダン・アイクが変更を検討したと言っているもの-彼が10日ほどで言語を設計したことを覚えておく必要があります) 。詳細については、こちらをご覧ください:Fat Arrow構文もちろん、これらの種類のものは常に変更される可能性があります...しかし、標準定義機関はそれを検討しています。
これは、 http: //sweetjs.org/の衛生的なマクロ機能を使用して行うことができます。