2016-10-23 9 views
-4

私はちょうどjavascriptとプログラミング全体を学び始めました。私はこれらの例を見つけ、その2つの機能の結果を理解しようとしました。Javascriptの機能の結果

まず:

(function(){ 
 
    var x = y = 11; 
 
})(); 
 
console.log("x = " + (typeof x !== 'undefined')); 
 
console.log("y = " + (typeof y !== 'undefined'));

結果はtrueとfalseです。 var xはvarキーワードで宣言されているので、ローカルvarであり、yはそうではありませんか?

及び第二の例:

(function(){ 
 
    console.log("a"); 
 
    setTimeout(function(){console.log("x")}, 1000);  
 
    setTimeout(function(){console.log("y")}, 0);  
 
    console.log("b"); 
 
})();

私の第二の例を教えてください?正しい:私は右のそれを得た場合 は、setTimeoutメソッドは時間が最初に0

おかげ

+0

2番目の例でわからないことはありますか? – Li357

+2

あなたはあなた自身の最初の質問に答えました。 2番目の例で説明するものは何ですか?私は奇妙な結果を見ません。さらに、なぜあなたは1つの投稿で2つの別個の無関係な質問をするのですか? – Cristy

+0

アルゴリズムとは何ですか? 2番目の例で理解できないことは、それについて明確にしてください。 – Geeky

答えて

2

に設定されている場合でも、実行を待ちます。 'x'宣言から 'var'を削除すると、その変数は関数スコープ外でも利用できるようになります。

2番目:javascript関数 'setTimeout'が非同期操作を開始します。つまり、渡された関数は、たとえ経過時間が0msであっても、後で操作するキューの最後に追加されます。 'console.log'関数は同期的に実行されるため、常に 'setTimeout'関数で指定された関数の前に実行されます。