2016-04-13 17 views
0

実行されているjavascriptファイルの順序を把握したいと思います。私は以下の例を持っています。どちらの方法が正しいのかを教えてください。Javascriptコードが実行される順序

//JS gets read from top to bottom: 
var hello = 6; //JS sees a varaible declared, it stores variable hello in memory 
hello = 4; //Then, JS sees a change to var hello, change the value of hello in the same spot of the memory 
console.log(hello); //Lastly, JS sees it needs to execute this function, grabs the value of variable of hello from the memory 

// OR is it like: 
var hello = 6; //JS sees this is not a function, ingores 
hello = 4; //JS sees this is not a function, ingores 
console.log(hello); //Then JS sees it needs to execute this function, it goes back to the top of the file to look for variable hello 

最後に、このトピックについて、私が深く掘り下げるためのリソースがありますか?最後に、私はjavascriptをマスターするために探しています、あなたが推薦する高度なjavascriptの本はありますか?

+1

何ですか?なぜ関数外の 'var'宣言を無視すべきですか?あるいは 'var'宣言が値が必要になるまで実行されないということですか?それは多くのバックトラックを必要とするので、最初の方法は正しいと思います。いずれにしても、変数の宣言と関数宣言を理解する必要があります。 'var hello = 6;'は実際には 'var hello 'と解釈されます。 hello = 6; 'ここで' var hello; 'は関数スコープまたはスクリプトスコープに置かれます。 – Xufox

答えて

2

これは最初の方法です。 JavaScriptは、行を無視して後でそれらに戻ることはありません。それらを順番に実行します。

デバッガを使用して行単位でステップ実行し、helloの値を調べることで、これを実証できます。

編集:ダグラス・クロフトフォードの「JavaScript:The Good Parts」は、書籍のおすすめとしてはかなり良い本です。言語のどの側面が有用であるかを熟考し、採用するためのかなり良いコーディング標準と実践を確立します。 Stoyan Stefanovによると、Gang of Fourのデザインパターンをそのまま移植しようとするのではなく、言語の強みに役立ついくつかの優れたアーキテクチャパターンをカバーする「JavaScriptパターン」があります。しかし、数年前のことですが、ES6の機能には対応していません。

+0

ああ。いい視点ね。あなたが先進的なjsの本またはrecoursesを推薦するかどうか私に知らせてください。確かに –

+0

。私はいくつかの本の推奨事項で私の答えを更新しました。 – Mark

+0

ありがとう、ありがとう! –

0

Javascriptは同期的でシングルスレッドなので、コードは最初の例のように上から下に実行されます。

しかし、javascriptは、多くの場合、非同期動作を提供するsetTimeoutxhrのようなさまざまなwebAPIを使用します。これらは、イベントループによって処理されるタスクキューに機能を追加します。これがどのように機能するかについての素晴らしい説明については、this videoをご覧になることをお勧めします。

+0

動画を共有していただきありがとうございます –