如下所示,我做了一個簡單的高分數組,保存到本地存儲並添加到用戶提示。範圍或功能提升問題?我不確定
作爲一個獨立的文件,它本身很好。或者至少它似乎是。
但是,當我嘗試將它集成到我的大型應用程序中時,我似乎遇到了範圍問題與我的全局變量allScores。數組的長度保持爲0.我檢查是否有任何變量重複,而我沒有。
我一直在嘗試閱讀關於函數提升和範圍。我不確定的是爲什麼下面的代碼作爲一個獨立的文件工作,但是當我將它集成到我的大型應用程序時,我遇到了範圍問題。
我應該如何做到這一點?由於我是JavaScript新手,我的最佳實踐很可能是關閉的。感謝您的指導。謝謝。
var allScores = [];
function saveScore() {
if (allScores.length === 0) {
allScores[0]= prompt('enter score', '');
localStorage ['allScores'] = JSON.stringify(allScores);
}
else if (allScores.length < 3) {
var storedScores = JSON.parse(localStorage ['allScores']);
storedScores = allScores;
var injectScore = prompt('enter score', '');
allScores.push(injectScore);
allScores.sort(function(a, b) {return b-a});
localStorage ['allScores'] = JSON.stringify(allScores);
}
else {
var storedScores = JSON.parse(localStorage ['allScores']);
storedScores = allScores;
var injectScore = prompt('enter score', '');
allScores.pop();
allScores.push(injectScore);
allScores.sort(function(a, b) {return b-a});
localStorage ['allScores'] = JSON.stringify(allScores);
}
document.getElementById('readScores').innerHTML = allScores;
}**
你的代碼還有改進的空間,但我沒有看到任何可能導致你描述的東西。首先要檢查的是,如果您的大型應用程序中的任何其他代碼與「allScores」數組混淆了,因爲它是全局的。順便說一句,你真的需要它成爲全球? – bfavaretto
有關您的環境的更多信息將有所幫助,例如正在使用哪個瀏覽器或解釋器,以及這些腳本如何連接在一起? –
@bfavaretto希望我的編碼能夠隨着我的技能加班而提高。好吧,我認爲它需要是全球性的,因爲我正在檢查長度,因爲我將分數保存到數組中。我想我會獲得前5名的成績。 –