[生活コード]JavaScript有効範囲
2734 ワード
📕 定義#テイギ#
グローバルVSエリア
有効範囲は、グローバル有効範囲とゾーン有効範囲の2つに分けられます.英語でscope
グローバル変数とは、アプリケーション全体からアクセスできる関数の外に作成された変数です.
ゾーン変数とは、関数に作成された変数で、その関数にのみアクセスできます.
例を参照してください.
var vscope = 'global'; // 함수 밖에서 만들어졌으니까 전역 변수
function fscope(){
var vscope = 'local'; // 함수 안에서 만들어졌으니까 지역 변수
alert('함수안 '+vscope); // 지역 변수 local 출력
}
fscope();
alert('함수밖 '+vscope); // 전역 변수 global 출력
たぶん議長に説明しただろう.正義を読めばわかる.グローバル変数の使用はできるだけ避けます。
varのグローバル変数を使用すると、コラボレーション時に混乱します.
グローバル変数のために関数の値を変えると、一人で符号化するときも問題点が混同され、他の人と仕事をしているときにこのような問題が発生すると、解決しにくくなります.
一般的には、ローカル変数を作成して使用できます.
📌 有効範囲の使用
有効範囲の効果
varの有無には違いがあります.変数として宣言をしない、例を見て理解しましょう.
function a (){
var i = 0;
}
for(var i = 0; i < 5; i++){
a();
document.write(i); //01234
}
a関数には変数i=0が宣言され、関数に変数が宣言されると領域変数と呼ばれる.ゾーン変数は関数でのみ有効です.出力するiはa関数以外の変数であるため、for繰返し文で宣言されたグローバル変数iが出力されます.でもvarがなかったらどうなるの?
varを追加しないと、宣言変数ではなくグローバル変数の値が変更されます.For反復文で宣言されるグローバル変数iの値は、常に0になります.これにより,i値が上昇し続けてもa関数が動作するため,0を出力し続け,i=0<5が満たされ無限ループに陥る.i++を使用してiの値を上げると、a関数を実行するときに再び0になるからです.
グローバル変数の使用
使用しなければならない場合は、グローバル変数を安全に使用する方法があります.まずそれを客体化する.宣言されたグローバル変数をオブジェクトとして作成し、オブジェクトのプロパティを使用して変数を管理すると、混乱を減らすことができます.多分そうです.
example = {}
example.direction = {
'left' : null,
'right' : null
}
第2の方法は、論理をモジュール化することである.これは、グローバル変数のように宣言し、匿名関数で囲んで領域変数にする最も人気のある方法です.(function(){
var example = {}
example.direction = {
'left' : null,
'right' : null
}
}())
これにより、グローバル変数の欠点をある程度補うことができる.📌 静的有効範囲
例を見て理解してみましょう.
var i = 5;
function a(){
var i = 10;
b();
}
function b(){
document.write(i);
}
a();
グローバル変数i=5でa関数が実行されると、領域変数i=10が宣言され、b関数が実行される.b関数要求出力i.では、ここでiのどの値が有効なのでしょうか.
最初は10だと思っていました.bが動作する地域では、地域変数i=10が宣言されるからである.
答えは5です.JavaScriptでは、関数の有効範囲は、実行される時点ではなく、宣言された時点です.少し混同されていますが、関数定義時のグローバル変数を考えると解決できます.
コメントから例を得た.
の両方の場合、追跡bの値は理解に役立つであろう.
📌 の最後の部分
私の知っている限りでは、javascriptではvarはほとんど使われていません.最近はlet
varは今回のリリースで多くの欠点があることが明らかになった.
しかし、今varを勉強しているのは、varが長い間書かれているためで、多くのプログラムがvarを理解するために理解する必要があります.また、letが現れる背景や既存のjavascriptを考慮してjavascriptで不便なvarを補完することもできます.
Reference
この問題について([生活コード]JavaScript有効範囲), 我々は、より多くの情報をここで見つけました https://velog.io/@yusuk6185/생활코딩-자바스크립트-유효-범위テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol