var の使用に関するまとめ

巴扎黑
巴扎黑オリジナル
2017-06-23 10:50:201864ブラウズ

MOOC JavaScript チュートリアルを行っているときに、var に関するいくつかの問題に遭遇しました。

一つのは、関数における変数宣言の問題で、var宣言(req1丶req2丶sumq)を使っても使わなくてもプログラムは正常に動作することが分かりました。コードは以下の通りです:

 1       <script > 2           function  app2(x,y) 3           { var sum,x,y; 4             sum = x * y; 5             return sum ; 
 6           } 7            req1 = app2(5,6);  //var req1 = app2(5,6); 8            req2 = app2(2,3);  //var req2 = app2(2,3); 9            sumq = req1 + req2;   //var sumq = req1 + req2; 10            document.write("req1的值:"+req1+"<br/>");11            document.write("req2的值:"+req2+"<br/>");12            document.write(req1+"与"+req2+"和:"+sumq);13        </script>

ちょっと混乱したので、ネットで検索したり、本を読んだりしました。 「JavaScript 言語の本質」について: 宣言されていない変数を直接使用することは、暗黙的なグローバル変数と呼ばれます。この方法はもともと初心者の便宜を図るため、意図的に使用前に変数を宣言する必要がないようにしたものです。ただし、変数の宣言を忘れることは非常によくある間違いです。 JavaScript の戦略は、事前に宣言し忘れた変数をグローバル変数にすることですが、これによりバグを見つけるのが非常に困難になる可能性があります。したがって、グローバル変数の使用は避けるべきです。

var に関連して別の混乱があります。これも MOOC にあります。コードは次のとおりです:

 1 <!-- 要创建一个运行于无穷循环中的计数器,我们需要编写一个函数来调用其自身。在下面的代码, 2 点击Start按钮,从0开始计数;点击Stop按钮,停止计数。 --> 3     <!DOCTYPE HTML> 4     <html> 5     <head> 6     <meta charset="utf-8"> 7     <script type="text/javascript"> 8           var num=0; 9           var i;                                        //不声明,不会显示错误。.10           function numCount(){11            document.getElementById('txt').value=num;12            num=num+1;13            i = setTimeout("numCount()",1000);           //若为var i ...,则错误。14            }15             function stopCount() {16             clearTimeout(i);17             }18     </script>19     </head>20     <body>21           <form>22           <input type="text" id="txt" />23           <input type="button" value="Start" onClick="numCount()" />24           <input type="button" value="Stop" onClick="stopCount()" />25           </form>26     </body>27     </html>

上記のコードは正しく、正常に実行できます。ただし、コードの 9 行目 (var i;) を削除しても、プログラムは正常に実行できます。問題は上記と同じです。宣言されていない変数が直接使用されると、その変数はグローバル変数になるため、実行されます。正しく。しかし、13 番目のコードが

var i = setTimeout("numCount()",1000);

に変更されると、コードの 9 行目が削除されたかどうかに関係なく、プログラムは正しく実行されません。これは次の理由によるものです: 関数スコープでは、var を使用して宣言された変数はローカル変数であり、var を使用せずに宣言された変数はグローバル変数になります。 なので、varで宣言した後、変数iはローカル変数なのでプログラムエラーになります。

グローバルスコープでも、varを使って定義された変数は削除できず、varを使わずに定義された変数は削除できます。つまり、厳密に言えば、暗黙的なグローバル変数は実際の変数ではなく、グローバル オブジェクトの属性です。これは、属性は削除によって削除できますが、変数は削除できないためです。

以上がvar の使用に関するまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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