グローバル変数は使用しないでください。しかし、私は何年もの間、あらゆる種類の制御構造にそれらを使用してきました。javascriptスコープのグローバル配列の問題
私の現在の問題は、グローバルに宣言され、後で記入され、次に別の場所から参照される配列の「消えている範囲」と関係があります。私は頻繁に私のメインのHTMLページに次の操作を行います
<...>
<script type="text/javascript" src="./js/arrayStuff.js"></script>
<script type="text/javascript" src="./js/printStuff.js"></script>
<script type="text/javascript>
var gGlobalArray = new Array();
loadgGlobalArray();
printgGlobalArray();
</script>
</head>
<html>blah blah
</html>
それから私は、そのサイズが事前に知られていない多次元配列を作るためにarrayStuff.jsファイルでこのようなものを持っていますファイルprintStuffで
function loadgGlobalArray()
{
<...>
gGlobalArray[rawFileIndex] = new Array(9);
gGlobalArray[rawFileIndex][0] = currentPathIndex;
gGlobalArray[rawFileIndex][1] = currentCtlName;
gGlobalArray[rawFileIndex][2] = currentStepbounds;
<...>
、JS、私はOK異なる寸法を参照することができます。
<...>
buffer += "<td>"+gGlobalArray[i][7]+</td><td>+gGlobalArray[i][8]+</td>";
document.getElementByID('output').innerHTML = buffer;
<...>
今、私が働いています新しい.jsの外部ファイルには、ここで私は困惑しています。時には私の昔の学校のグローバル配列は、私が意図するように機能することがあり、時にはそうではありません。私はJavascriptの配列が実際にオブジェクトであることを知っています。なぜなら、の長さがのプロパティが利用できないかもしれない理由を理解することができますが、通常のデバッグアラートを外部ファイルに残す限り。すべてのアラートをコメントアウトすると、内部の配列情報が消え、長さのプロパティが消えます。アラートが参照されていない場合でも、配列に記入するビットに1つのアラート文を入れれば配列自体、情報が保持されます。どうして?
ええ、それは競合状態であり、オブジェクトは参照された時点でまだ存在しませんでした。ルックとリテラル参照のおかげで、ありがとう! – lemo