まず、関数定義:
元の関数の小さな例を取るために何であるかの説明では:
我々は、すべての(:中国の四大発明:科学について製紙、印刷、火薬、羅針盤)印刷の我が国の四大発明ことを知っているので、繰り返しの、そこに印刷されている理由の一つは、時間、効率の無駄をコピーし、非常に低いので、印刷用途が生まれた、印刷機は、ツールのようなものです、このツールを使用して、我々はコンテンツの一部を転写するために、正確に繰り返す必要はありません。
今日の機能は、印刷に似ている、そして、我々は実際の必要があるため、同じ機能を実装する際にコードを書く時に、使用されたコードはほぼ同じであることがわかったので、私は同じ書き込みコードを繰り返さなければならなかったと述べました我々は、解像度の時間が非常に長くなり、メモリスペースを取るので、順番に我々のコードの書き込みをより美しくするために、我々は我々のコードをカプセル化することができ、それに名前、場所を与えるごちゃ混ぜに見えるコードを書きます別のモジュールでは、あなたはOKに引き継ぐために使用する必要があります!
たとえば、私たちは、あなたが5回を印刷したい任意の直接的なループを使用していない、我々は5倍の出力繰り返す必要があり、次のように、コードは「こんにちは、世界!」の「Hello World!」を:
document.write(( 'こんにちは世界!')+ "</ BR>" ); document.write(( 'Hello Worldの!')+ "</ BR>" ); document.write(( 'Hello Worldの!')+ "</ BR>" ); document.write(( 'Hello Worldの!')+ "</ BR>" ); document.write(( 'Hello Worldの!')+ "</ BR>");
次は、印刷する機能をパッケージに「Hello World!」を
HelloWorldの機能(){ document.writeを(( 'Hello Worldの!')+ "</ BR>"); } のHelloWorld() のHelloWorld() のHelloWorld() のHelloWorld() のHelloWorld()は
明らかです:私たちは、印刷機能を使用します」。 Hello World」の、ちょうどOKに呼び出すために時間を使い、同じ書き込みコードを繰り返す必要はありません!
定義された関数:機能コード機能と呼ばれる別のモジュールとしてパッケージ化、繰り返し使用を必要とします。
第二に、メソッド関数の宣言:
関数で定義された機能
私たちは、この機能を使用する方法というの人気ポイントを機能が何であるかを理解し、その後、関数を宣言する方法を見て:
1.ステートメントは、メソッドを定義します。
実際には、印刷するときに我々が使用する方法は、「Hello Worldのは、」ステートメントは、法律を規定しています
フォーマット:関数の関数名(){
ファンクションブロックと、
}
呼び出し:関数名を()
2.式に定義する方法:
一つのその表現、そして確かに割り当てに関連して、私たちは大胆に、法律の定義は、我々はそれの関数を変数に割り当てることはありません表現が何であるかを、推測することができますか?
その形を見てください:
VAR変数名=関数[関数名](){
ファンクションブロックと、
}
コール:変数名()
注意:VAR変数名は、式の定義は、関数名があるので、それはこの変数ではなく、関数名、関数名やバック関数で、関数名は[]で書かれた理由、法律を宣言する背後にあります省略し、通常の状況下で、我々はまた、省略されている関数名を書き込みます。
声明文では方法がより一般的に使用される定義し、使用後に、法律で定義されたメソッドと式を定義します。
なぜそれがより一般的な声明は、法律を定める法律は、同法で定義された文と式との違いについて言う定義は以下のとおりです。
法の違いの定義で定義された3、方法文および式:
声明は、法律が機能を強化する定義し、関数がコードを実行する前に、文を読みますが、人気の話は、私たちがどの位置でこの関数を呼び出すことができるものです。
// 人()//前部座席への関数呼び出し 機能人(){ VARの名=「ジョン・ドウ」、 アラート(名前); } 人()// 関数呼び出しの後//張
発現は、あなたが最初に呼び出した後、関数を宣言しなければならない法律が機能を改善されません定義します。
// 人();エラー:コンソール機能出力人ではありません VARの人= 機能(){ VARの名= "ジョン・ドウ" 、 アラート(名); } 人(); // 張
関数宣言の運用ルール:
関数の宣言は、プログラムのみに表示されるか、生体内で機能することができます。構文ワイズ、彼らはブロック(ブロック)に表示されません({...})、例えば、場合表示されませしばらくまたはステートメントのために。ブロック(ブロック)ステートメントためにのみこのような機能を含むことができない文、宣言とソースエレメントを含みます。唯一可能な表現の状況は、ブロック(ブロック)で行われるように一方、よく見ると、ルールを見つけるだろう、それは表現文の一部としてそれを作ることです。ただし、仕様は明らかに式文はキーワード機能で始めることはできません定義します。この事実は、(ブロック(ブロック)は声明文で構成されているので)関数は同じ式文文またはブロック(ブロック)に表示されないことを意味します。
次の関数宣言と関数式の類似点と相違点についての簡単な話です。宣言および行動の表現は非常に微妙ですが、非常に重要な違いがあります。
まず、関数宣言が解析され、最初の前の任意の式の評価に解析され、評価します。でも、最後の行のソースコード中のif文一番の式が評価される前に、それは同じスコープに配置されます。あるいは、理解しやすい例を参照すること。次の例では、関数fnは、警告の後に宣言されています。しかし、警告の実行時には、fnが定義されています。
警告(FN()); // 输出のHelloWorld! 関数FN(){ リターン 'のHelloWorld!' ; }
どのような場所の違いの概要? 1 。常に始まる範囲で最初に解決宣言し; 2 。唯一の時間の顔で算術式。 それは異なる状況下で異なる結果を得ることができますので、条件文の振る舞いによって、関数宣言をコントロールする他の重要な関数宣言特性は、標準化されていませんがあります。それは次のとおりです。
// それをしないでください!
// 別のブラウザは、異なる戻り結果を持っている
IF(trueに){
関数のfoo(){
リターン '最初の' ;
}
}
他{
関数fooの(){
リターン '第2' ;
}
}
のfoo();
// 覚えていますこの場合の関数式を使用する:
VaRのFOOを、
IF(真の){
FOO = 関数(){
リターン '最初の' ;
};
}
そうでなければ{
FOO = 関数(){
戻る「第2」。
}。
}
のfoo();
そのため、これらの制限、限り(上記の例のように)ブロック内の関数を、実際にはむしろどのような関数宣言や表現よりも、構文エラーとして表示する必要があります。
だから我々は何時に行う関数宣言や関数式を使用する必要がありますか?関数宣言でのみ表示される「プログラム・コード」、これはその機能だけの身体や他のグローバルな空間を意味する。彼らが定義されていないか、または変数プロパティに割り当てられていない、または関数呼び出しのパラメータとして表示されます。以下例としては、関数宣言、FOO()、バー()およびローカル()宣言モードによる関数宣言があるの使用が許可されています。
// 地球環境 関数のfoo(){} 関数ローカル(){ // ローカル環境の 関数バー(){} リターンバー; }
あなたは構文で関数宣言を使用できない場合、あなたは関数式を使用することができます。例えば:被験者リテラルにおけるパラメータ又は関数として定義され、伝達関数:
// この式は、匿名関数である (callMe 関数{() // 引数として伝達関数 }); // この関数は、指定された式である callMe(機能(ミー){ // パラメータとして関数を渡し、関数名前ミー }); // 他の機能発現 するvar myObjectという= { 言う:機能(){ // 私は関数式AM } }。