2

次のようなことが可能かどうか知りたいです。

var f = function;

jsキーワードfのように使用するよりもfunction

このようなことが可能であれば、jsコードの最小化に使用します。コードには多くの機能があります。

4

4 に答える 4

3

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');
于 2012-10-30T22:12:22.297 に答える
2

あなたが説明するようにすることはできません。

私が考えることができる最も近いのは、渡された文字列を解析するためにevalを使用して、関数を生成するための関数を作成することです。ただし、evalを使用することは一般的に悪であり、避ける必要があります。全体として、私はこのようなことをまったくお勧めしません。

また、ネットワーク経由で送信されるJavaScriptを最初に圧縮する必要があるため、単語の長さに関係なく、単語関数は1つのトークンで表されるため、やりたいことを実行する意味はほとんどありません。

ソースコードをより読みやすく簡潔にしたい場合は、javascriptにコンパイルされ、関数の最初の文字を使用せずに関数を定義できるコーヒースクリプトをお勧めします。チャックノリスは承認するでしょう!

結論と推奨事項の要約

  • くだらない無料のソースにコーヒースクリプトを使用する
  • あなたが決して見ない冗長なjavascriptにそれをコンパイルします
  • そのjavascriptを縮小します(uglifyは素晴らしいコンプレッサー、またはグーグルのクロージャーです)
  • gzipで圧縮します(繰り返し文字列を適切に圧縮します)
  • それを送る

ここでの重要な問題は、gzipで圧縮した後、単語のサイズfunctionが無関係になることです。したがって、残っている唯一の問題は、ソースコードの読みやすさです。

于 2012-10-30T22:05:46.863 に答える
1

ええ...正直なところ、関数のキーワードを「f」に短縮しようとしても心配する必要はありません。これにより、作業にほとんど戻ることができず、コードの可読性も損なわれます。そして、あなたが百万の機能のようなものを持っていない限り、私はそれに焦点を合わせません。@prodigitalsonが言ったように、ミニファイアを実行します。これにより、コードで可能な実際の縮小が処理され、コードベースでの可読性が維持されます(これは、数バイトを節約するよりも重要です)。

また、私のコメントによると、長い「関数」キーワードを置き換える途中に(潜在的に)何かがあります(ブレンダン・アイクが変更を検討したと言っているもの-彼が10日ほどで言語を設計したことを覚えておく必要があります) 。詳細については、こちらをご覧ください:Fat Arrow構文もちろん、これらの種類のものは常に変更される可能性があります...しかし、標準定義機関はそれを検討しています。

于 2012-10-30T22:07:57.213 に答える
0

これは、 http: //sweetjs.org/の衛生的なマクロ機能を使用して行うことができます。

于 2012-10-30T22:15:09.600 に答える