1

API を作成するときは、関数を上から順に並べるのが好きな傾向があります。最も公開されている関数を一番上に、ヘルパー関数を一番下に置きます。ただし、varマジックfunction宣言以外で関数を定義する場合は、関数を定義する前に使用することはできません。$companyでは、呼び出されたオブジェクトがあり、そのメソッドを定義している場合はどうでしょう。この方法で JS を安全に注文できますか?

var $company = {};

$company.foo = function(x) {
    $company.bar(x*x); // used in definition, but not called directly - ok?
};

// $company.bar(6) // this would produce an error

$company.bar = function(x) {
    alert(x);
};

現在のバージョンの Firefox では動作するようですが、動作が定義されているかどうかを知りたいです。これが壊れる IE のバージョンはありますか?

4

2 に答える 2

0

はい、ブラウザ (または JavaScript エンジン) は.、左側の式を評価する必要があるまで、a の右側にあるものについて仮定を行わないため、これは機能します。

しかし、多くの人はこの種の「先読み」を好まず、代わりにコールバック関数を使用します。

 $company.foo = function(x, callback) {
      callback(x*x);
 }

このコードは、ほとんど何でも呼び出すことができ、カリー化できるなど、より明白で柔軟性があります。

于 2014-09-18T15:59:53.740 に答える