スコープ
変数が関数内で宣言されていないか、var なしで宣言されている場合、その変数はグローバル スコープを持ち、ウィンドウ オブジェクトのすべてのプロパティにアクセスできます。コードで定義され、関数内で宣言されます。また、var で変更された変数はローカル変数であり、関数本体内でのみ使用できます。ただし、関数のパラメータは var を使用しません。
ブロックレベルのスコープはありません
// if语句: <script type="text/javascript"> if(true){ //if语句的花括号没有作用域的功能。 var box = "trigkit4"; } alert(box);//弹出 trigkit4 </script>
for ループステートメントについても同様です。
変数クエリ
変数クエリでは、ローカル変数へのアクセスはグローバル変数よりも高速であるため、スコープチェーンを検索する必要はありません。
次の例:
<script type="text/javascript"> var name = "Jack"; function setName(){ var name = "trigkit4"; return name; //从底层向上搜索变量 } alert(setName()); </script>
メモリの問題
JavaScriptには、データが使用されなくなったら、「null」に設定して参照を解放できます
循環参照。
非常に単純な例: DOM オブジェクトが Javascript オブジェクトによって参照され、同時に同じまたは別の Javascript オブジェクトを参照すると、この DOM オブジェクトがメモリ リークを引き起こす可能性があります。この DOM オブジェクトへの参照は、スクリプトの停止時にガベージ コレクターによって再利用されません。参照サイクルを中断するには、DOM 要素を参照するオブジェクト、または DOM オブジェクトへの参照に null を割り当てる必要があります。
クロージャ
クロージャ外の変数がクロージャ内に導入された場合、クロージャ終了時にオブジェクトをガベージコレクション(GC)することができません。
var a = function() { var largeStr = new Array(1000000).join('x'); return function() { return largeStr; } }();
DOM リーク
元の COM が削除されると、削除されない限り、子ノードの参照はリサイクルできません。
timersタイマーリークス
timersは、メモリリークが発生する一般的な場所でもあります。メモリリーク:
タイムラインでレコードをクリック -> メモリ:以上がJavaScript 変数のスコープ、メモリ、DOM リーク、その他の問題の例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。