2016-08-09 3 views
0

callMeを次のコードで使用しようとしています。しかし、私はそれがどのように動作する「こんにちは」の印刷、その後functopnから最後console.log(myGreeting);を削除未定義ですと、私の出力が来て、その来undefined.javascriptでのcallMe関数の動作方法

var myGreeting="Hello"; 
 
function callMe(){ 
 
console.log(myGreeting); 
 
var myGreeting = "HI"; 
 
console.log(myGreeting); 
 
}

+0

については

あなたは 'callMe'関数を呼び出すaintの、あなたはありますか?ログはありません...スニペットを実行しています。 – Ayan

+0

あなたはこのcallMe()を呼び出したことがありますか? –

+0

私はしませんでした。そしてそれが私がそれがどのように働いているのか尋ねた理由です。私はmsdnのドキュメントで明確ではなかった。 –

答えて

3

JavaScriptがローカルおよびグローバル2つのスコープを持っている理由。ローカルスコープはevery function's scopeです。同じ名前の2つの変数がfunciton's scopeにある場合は、最初にその変数にアクセスします(scope)。だからあなたの例では、の外側のmyGreeterは隠されています。varとして定義される変数はhoistingで動作します。だからあなたのコードはvarキーワードや関数の宣言を持つすべての変数は、関数の先頭に移動させるには、この1

var myGreeting="Hello"; 

function callMe(){ 

    var myGreeting; // which is undefind 

    console.log(myGreeting); // undefined 

    myGreeting = "HI"; 

    console.log(myGreeting); // HI 
} 

に変換されます。もっとここを参照してください https://www.sitepoint.com/demystifying-javascript-variable-scope-hoisting/

+0

@shanky singhここをクリック –

+0

はい私は文書を読んでいます。ご回答ありがとうございます。 –

+0

@SurenSrapyanなぜコール関数で変数を宣言する必要がありますか?グローバル変数にアクセスできません。 –

関連する問題