関数の宣言と呼び出し JavaScript は、ブラウザーによって動的に解析されて実行される記述スクリプト言語です。一般に、関数を定義するには 2 つの方法があり、ブラウザには方法ごとに異なる解析順序があります。
コードは次のとおりです:
//「定義」 関数定義
function Fn1(){
alert("Hello World!");
}
//「代入」関数定義
var Fn2 = function() {
alert("Hello wild!");
}
ページの読み込みプロセス中に、ブラウザーはページまたは読み込まれた各 js コード ブロック (またはファイル) をスキャンします。定義関数に遭遇した場合は前処理が実行され(C などのコンパイルと同様)、処理が完了した後、代入関数に遭遇した場合は上から下に実行が開始され、関数は何もせずに変数に代入されます。前処理 (変数は最初に定義してから参照する必要があるという 1 の原則と同様)、変数は呼び出されるまで処理されません。簡単な例を次に示します。
コードは次のとおりです:
//「定義」関数定義
Fn1();
function Fn1(){
alert("Hello World!")
通常の実行では、「Hello World!」が表示され、ブラウザは Fn1 を前処理し、Fn1(); から実行を開始します。
コードは次のとおりです:
//「割り当て」 関数定義
Fn2();
var Fn2 = function(){
alert("Hello wild!");
Firebugエラー: Fn2 は関数ではありません。ブラウザは Fn2 を前処理せず、順番に実行するため、エラー Fn2 は定義されていません。
3. コード ブロックと js ファイルの処理
「コード ブロック」とは、 /javascript">
function Fn(){
alert("Hello World!");
}
// エラー: Fn が定義されていません。交換してください。 2 つのブロック
4. 関数を繰り返し定義すると、前の定義が上書きされます。
//最初に「私は壁の内側にいます..」が表示されます;
//次に「私は外にいます」が表示されます壁だ!」
本体の onload イベントのトリガー条件は、本体のコンテンツがロードされ、このイベントがトリガーされる前に本体内の JS コードが実行されることです (なぜですか? 6 でわかります...)
6. JavaScript はマルチスレッドですか?それともシングルスレッドですか? 厳密に言えば、JavaScript にはマルチスレッドの概念がありません。すべてのプログラムは「シングル スレッド」で順番に実行されます。
不適切な例:
コードは次のとおりです:
関数 fn1(){
var sum = 0;
for(var ind=0; indsum = ind; 🎜>alert ("答えは" sum);
}
function fn2(){
alert("前から分かっていたけど、言わなかっただけです");
fn1();
fn2();
//最初に表示されます:「答えは 499500」、
//次に表示されます:「私は知っていました」前に言いましたが、私がそれを言わなかっただけです。"
次に、遅延実行と Ajax の非同期読み込みはマルチスレッドではないのか、ということを尋ねる必要があります。はい、次のようなプログラムは「マルチスレッド」に見えます。
コードは次のとおりです:
setTimeout(function(){
alert("I call first")
},1000); 🎜>}
function fn2(){
alert("後で電話します");
fn1()
// 最初にポップアップします。 : "後で電話します",
// 1 秒後にポップアップが表示されます: "最初に電話します"
fn2() と遅延プログラムは分けられているようです2 つのプロセスですが、実際には、これはオペレーティング システムの「割り込みと応答」に似た「コールバック」メカニズムが動作しています。遅延プログラムは「割り込み」を設定し、その後 fn2() を実行し、1000 秒待ちます。ミリ秒後にコールバックして fn1() を実行します。
同様に、5 の本体の onload イベントによって呼び出される関数もコールバック メカニズムを使用します。本体がロードされた後、コールバックは fnOnLoad() 関数を実行します。
Ajax リクエストのデータ処理関数にも同じことが当てはまります。
JavaScript スレッドの問題についてさらに詳しく説明するには、JavaScript のスレッドに関する私の意見、および infoQ の JavaScript マルチスレッド プログラミングの紹介を参照してください。
疲れたので、コールバック関数についてもう一度話しましょう。
7. コールバック関数
コールバック関数は何に使用されますか?これはコールバックによって実行される単なる関数です。なんてナンセンス :D
6 で述べたように、最も一般的なコールバックは、onclick、onmouseotutorialver、onmousedown、onload などのブラウザ イベントの呼び出し関数と、Ajax の非同期処理です。リクエストデータ。setTimeOut 遅延実行関数、setInterval ループ実行関数など。
純粋なコールバック関数を書いて遊んでみましょう:
コードは次のとおりです:
コードをコピーします
function date(hours, callBack ){
var SP= 0; // SP, 怒りの値
//雌豚の足は何時間も雪の中に立っていた
//サイクルが始まります..
SP;
/ /ループの終了...
callBack(SP)
dating(1, onBack);