Biliyorum, global değişkenleri kullanmayın. Ama bunları yıllar boyunca her türlü kontrol yapısı için kullandım ve bu eski zamanlardaki modüler 'nesneye itiraz ediyorum' adam için iyi çalışıyorlar.'global' dizilerle javascript kapsamı problemi
Güncel sorunum, global olarak bildirilen, daha sonra doldurulacak ve daha sonra başka bir yerden başvurulan dizilerin 'kaybolma kapsamı' ile ilgilidir.
<...>
<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>
Sonra, boyutu önceden bilinmediği çok boyutlu bir dizi yapmak için arrayStuff.js dosyasında böyle bir şey olur: Sık sık benim ana html sayfasındaki aşağıdakileri yapın dosyasında
function loadgGlobalArray()
{
<...>
gGlobalArray[rawFileIndex] = new Array(9);
gGlobalArray[rawFileIndex][0] = currentPathIndex;
gGlobalArray[rawFileIndex][1] = currentCtlName;
gGlobalArray[rawFileIndex][2] = currentStepbounds;
<...>
printStuff, js, tamam farklı boyutlar başvurabilirsiniz: Şimdi ben çalışıyorum
<...>
buffer += "<td>"+gGlobalArray[i][7]+</td><td>+gGlobalArray[i][8]+</td>";
document.getElementByID('output').innerHTML = buffer;
<...>
Yeni bir .js harici dosyada, ve işte beni neyin şaşırttığı. Bazen eski okul global dizilerim onlara niyet ettiğim gibi çalışır ve bazen de yapmazlar. Javascript dizilerinin gerçekten nesneler olduğunu biliyorum ve uzunluğu özelliğinin neden kullanılabilir olmayabileceğini anlayabiliyorum, ancak kicker, dizilerimin her zamanki hata ayıklama uyarılarını harici dosyalarda bıraktığım sürece tasarlandığından . Tüm uyarıları açıklarsam, iç dizi bilgileri kaybolur, uzunluk özelliği kaybolur, vb. Uyarıyı göndermiyor olsa bile diziyi doldurduğum bitin içine tek bir uyarı bildirimi koyarsam, dizinin kendisi, bilgi korunur. Niye ya?
yup, bu bir yarış koşuluydu ve nesne başvurulan noktada henüz mevcut değildi. Görünüm ve gerçek referans ipucu için teşekkürler! – lemo