2012-04-26 8 views
0

私が使用するJavaScriptのチュートリアルは常に使用する前に定義しますが、PHPの本は常に最後に定義していますが、実際にはこれは良い方法であると指摘しています。コードの最初または最後にクラスと関数を定義するのが望ましいですか?

何か別の理由がありますか?

+4

JavascriptとPHPは非常に異なる言語です。ある言語の「良い実践」を他の言語に移すことはできないかもしれません。しかし、この場合、少なくともPHPではクラス定義とトップレベルのコードを混在させるのは良い方法ではないと思います。ここでは別々のファイルを簡単に使用できます。 –

+1

「クラスと関数を定義する」とはどういう意味ですか?コードサンプルを見せてください。私が知っているほとんどのプログラミング言語では、まずメンバーを定義し、次にコンストラクターを定義し、次にメソッド(または関数)を定義します。 – botbot

答えて

4

インラインコードが実行されている(たとえば、ロードされて実行されている)場合は、それらを使用するコードの前にグローバル変数を定義する必要があります。

関数は、コードを最もきれいで読みやすいものにするために、どのような順序で定義することもできます。

たとえば、このコードで:

foo(); 

function foo() { 
    alert(x); 
} 

var x = 4; 
​ 

xはまだfoo()が呼び出された値を持っていないためfoo()への呼び出しがundefinedに警告しますが、あなたはfooは、そのコードで呼び出すことができることがわかりますコードが実際に実行される前にすべての関数がロードされるため、関数定義の前に現れます。

ベストプラクティスとして、関連する機能のモジュールを一緒に配置することができる最良の方法でコードを整理することは理にかなっていますが、その順序は一般的に重要ではありません。私はあなたがjavascriptは実際にクラスではないことを認識していると信じています。関数オブジェクトとプロトタイプを使用して、他の言語と同様の動作をシミュレートすることができますが、クラスではなくプロトタイプに基づいたオブジェクトであるため、クラスは実際にはありません。

2

Javascriptでは、クロージャ内のすべてを宣言するのが一般的です。オブジェクトまたは関数である可能性があるため、グローバルスコープを汚染しません。 varaiblesを定義するときには、スコープが指定されている関数の先頭に宣言することがよくあります。

Javascriptがクラスを持っていませんが、オブジェクトリテラルまたはコンストラクター関数を定義すること関数宣言関数式と同じではないことに限り、あなたは心に留めておくとどこでも行うことができます。

function foo() { ... } // Declaration, works anywhere 
var foo = function() { ... } // Expression, works only after the assignment 

詳細はこちらhttp://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/

0

Javascriptでは、関数を使用する前に定義する必要があります。 関数を使用するコードの前に関数定義を置く必要があります。

ページスピードを向上させるためのいくつかの推奨事項では、HTMLページの最後にJavascriptの実行を配置するように指示しています。そうすることで、ページとすべての要素が完全に読み込まれたときにJavascriptが開始されます。 (see article here

定義された関数は<body>要素自体を含む体の任意の要素に直ちに動作可能であるようにそれにもかかわらず、JavaScriptが残りの使用量は、<header>セクションの関数宣言を配置することです。ブートストラップやその他の関数の実行は、HTMLページの最後に置くことができます。

PHPの場合とは異なります。

PHPスクリプトでは、関数を使用しているコードの後であっても、コード内の任意の場所で関数を定義できます。これはPHPがコードの最初の行を実行する前に完全なスクリプトを読み込まなければならないので可能です。

さらにコードを読みやすくするために、残りのPHPの使用方法はアルゴリズムから始まり、関数定義をスクリプトの最後に置くことです(関数を分離したスクリプトにする方が多くなります)。

関連する問題