私はJavaScriptに新しいですし、私は、次の、ローカルおよびグローバル変数のスコープにいくつかの練習をしていたが、私のコード(fiddle)であります定義されていないとしてmyname
を示しています。だから私の混乱はなぜmyname
のグローバルインスタンスにアクセスすることができないと私はmyname
関数内で定義されていない場合、正常に動作します。はJavascriptがローカルおよびグローバル変数の混乱
答えて
グローバル変数に代わるものではありません。起こっているのは "可変ホイスト"と呼ばれるものです。つまり、関数の先頭にvar myname;
が挿入されます。あなたがそれら を使用する前に、必ずあなたの変数を初期化する - これを試してみてください。JavaScriptで
var myname = "initial";
function c() {
alert(myname);
myname = "changed";
alert(myname);
}
c();
私は値を変更しようとしているだけではありません。グローバル変数自体の価値を変えているのですが... "WHY"というコンセプトを理解したいのですが... –
これはアラートの問題を修正します定義されていませんが、グローバル変数 'myname'だけを使用しているので、ローカル変数は削除されます。 – EmptyArsenal
グローバル変数を置き換えません。起こっているのは "可変ホイスト"と呼ばれるものです。つまり、myname var mynameです。関数の先頭に挿入されます。変数を使用する前に常に変数を初期化しておいてください。これは私が理解しているhttp://stackoverflow.com/questions/11938961/understanding-global-local-scope-in-javascript?rq=1 –
、変数の宣言は、自動的に関数の先頭に移動されます。したがって、通訳者は次のように見えるようになります。
var myname = "initial"
function c(){
var myname;
// alerts undefined
alert(myname);
myname = "changed";
// alerts changed
alert(myname);
}
c();
これは「ホイスト」と呼ばれます。
ホイストと、変数のスコープが宣言されている関数であるため、この混乱を避けるために関数の先頭にすべての変数をリストするのが標準的な方法です。
を参照することができます。ローカル変数と同じ名前のグローバル変数にアクセスする方法.. ?? –
あなたは 'window.myname'を実行することによってそれにアクセスできるはずです。ここで参照してください:http://stackoverflow.com/questions/15826751/access-overridden-global-variable-inside-a-functionしかし、グローバル変数は通常、良い習慣とはみなされません。ほとんどの場合、グローバルオブジェクトとそれを介してアクセスします。すなわち 'var me = {myname:" initial "}'を呼び出し、関数内で 'me.myname'を呼び出します。 – EmptyArsenal
変数の宣言が上に移動するとは言いません。たとえば、10行目にvar myname = "initial"と書かれている場合、1行目のvar myname = "initial"とは異なりますが、実際にはvar mynameが1行目で、 10には値が割り当てられます。つまり、myname = "initial" –
- 1. ローカルおよびグローバル変数(Java)の
- 2. グローバルおよびローカル変数発行
- 3. グローバル変数コードの混乱
- 4. グローバルおよびローカルjavascriptのスコープ
- 5. Javaおよび.NET:Base64変換の混乱
- 6. Pythonでのグローバル変数の混乱
- 7. フォークとグローバル変数との混乱
- 8. Rubyのメソッド、PROC、およびブロック混乱
- 9. にcoinitialize()および静的混乱
- 10. javascriptのローカル変数とグローバル変数
- 11. javascriptのローカル変数とグローバル変数
- 12. ローカルおよびグローバルな状態
- 13. Javascriptをグローバル変数は、ローカルの
- 14. ローカル変数、インスタンス変数、グローバル変数、およびクラス変数の違いは何ですか?
- 15. RVMグローバルgemset混乱
- 16. 目的C、クラス、およびグローバル変数
- 17. JavaおよびJNIグローバル変数
- 18. Javascript変数スコープとの混乱
- 19. UCWA:makeMeAvailableが禁止およびAPIの混乱を返す
- 20. ローカル変数、最適化、およびARC
- 21. JavaScript関数の混乱?
- 22. Javascriptの混乱
- 23. シングルスレッド同期および非同期の混乱
- 24. VB.NET/ASP.NET Withおよび新しいキーワードの混乱
- 25. PHP変数の混乱
- 26. Jinja2:ローカル/グローバル変数
- 27. javascriptのローカル変数をグローバルに変換する方法は?
- 28. ローカル変数の値をJavaScriptのグローバル変数にコピーする
- 29. Javascriptで同じ名前のグローバル変数とローカル変数
- 30. JavaScriptブロックステートメントの混乱
** alert(window.myname); **次に値を取得します –
@dholakiyaankitまだwindow.mynameを使用しようとしましたが、未定義と言っています... –
@BharatSoni window.mynameは私の作品ですブラウザ。 – EmptyArsenal