ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の変数の型と変数のスコープをより深く理解する方法

JavaScript の変数の型と変数のスコープをより深く理解する方法

伊谢尔伦
伊谢尔伦オリジナル
2017-07-18 10:19:311161ブラウズ

変数の型

JavaScriptはJavaやCなどの言語とは異なり、型付けがなく検出が弱い言語です。変数の定義には変数の型を宣言する必要はありません。代入を通じてさまざまな型のデータを同じ変数に割り当てることができます。例:

i=100;//Number类型 
i="variable";//String类型 
i={x:4};//Object类型 
i=[1,2,3];//Array类型

JS のこの機能によりコーディングがより柔軟になりますが、コンパイラーの検出が弱いため、長いコードを維持するのが非常に困難になるという欠点もあります。

グローバル変数とローカル変数
JS パーサーが実行されると、まず実行環境でグローバル オブジェクトが構築され、使用するオブジェクトのプロパティとして定義されます。 this キーワードと window オブジェクトの両方でアクセスできます。関数本体内のローカル変数は、関数の実行時に生成される呼び出しオブジェクト内にのみ存在します。ローカル変数は、関数が実行されるとすぐに破棄されます。したがって、プログラミングでは、変数を合理的に宣言する方法を考慮する必要があります。これにより、不要なメモリのオーバーヘッドが削減されるだけでなく、変数の繰り返し定義や以前に定義された変数の上書きによって引き起こされるデバッグの問題が大幅に回避されます。

変数のスコープ
変数のスコープは、どのプログラミング言語においても重要な詳細です。 JS の変数のスコープは JAVA や C などの言語に比べて比較的自由です。大きな特徴は、JS 変数にはブロックレベルのスコープが存在しないことです。関数内の変数は Run 関数全体で有効です。以下のコード:

<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> 
//定义一个输出函数 
function outPut(s){ 
document.writeln(s) 
} 
//全局变量 
var i=0; 
//定义外部函数 
function outer(){ 
//访问全局变量 
outPut(i); // 0 
//定义一个类部函数 
function inner(){ 
//定义局部变量 
var i = 1; 
// i=1; 如果用隐式申明 那么就覆盖了全局变量i 
outPut(i); //1 
} 
inner(); 
outPut(i); //0 
} 
outer(); 
</SCRIPT>

出力結果は 0 1 0 です。 上記のことから、JS が var を使用して関数本体で変数を宣言した場合、この変数は関数本体でのみ有効であることが証明できます。関数が終了すると、ローカル変数は破棄される可能性があります。
上記の JS 機能のため、注意が必要な別の重要な問題があります。 ActionScript は以前にも使用されましたが、ActionScript と JS はどちらも ECMA 標準に基づいていますが、ここでは少し異なります。たとえば、次のコード:

<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> 
//定义一个输出函数 
function outPut(s){ 
document.writeln(s) 
} 
//全局变量 
var i=0; 
//定义外部函数 
function outer(){ 
//访问全局变量 
outPut(i); // 0 
//定义一个类部函数 
function inner(){ 
outPut(i); //undefiend 
var i=1; 
outPut(i); //1 
} 
inner(); 
outPut(i); //0 
} 
outer(); 
</SCRIPT>

JS 変数スコープ

<script language ="javascript" type ="text/javascript" > 
var a = "change"; 
function fun() { 
alert(a);//输出undefined 
var a = "改变了"; 
alert(a);//输出改变了 
} 
alert(a);//输出change 
fun(); 
</script>

var は、初めて a が出力される前に、JS がコンパイル前分析で変更に を割り当てています。最初の出力変更 fun() 関数が呼び出されるとき、JS は出力する前に新しいスコープを作成します。そのため、fun() の最初の出力は未定義になります。 2 番目の出力には値が割り当てられているため、新しい値が出力されます。2 つの a は関数の内部と外部にある 2 つの異なる変数です。たとえば、次のようになります。

<script language ="javascript" type ="text/javascript" > 
var b; 
function fun() { 
b = "change"; 
} 
alert(b);//输出undefined 
</script>

変数 b は関数の外部で定義されており、指定された値があります。関数 b の value には値が割り当てられますが、出力は未定義です。

以上がJavaScript の変数の型と変数のスコープをより深く理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。