[英]Javascript Associative Array to Integer?
我正在為實習工作開發大量軟件,我的任務是向系統添加功能,該系統根據現有獎品和紙牌數量構建獎品級別表。
我正在進入添加行的功能,並且發現一對極其奇怪的聲明。 我將發布函數本身,以免缺少上下文抑制答案。 我搜索了“ cast”,“ array”和“ number”的各種組合,但似乎與這種做法無關。
this.addNewTableRow = function(){
var request = new XMLHttpRequest();
awardLevel = this.length + 1;
request.onreadystatechange = function(){
if (request.readyState == 4 && request.status == 200){
if(request.responseText != -1){
var tableBody = document.getElementById('award-body');
var sqlId = parseInt(JSON.parse(request.responseText));
var prevSelector = document.getElementById('level-select-'+self.length);
var prevLevel = 0;
if(prevSelector != null){
prevLevel = parseInt(prevSelector.value);
}
var minCardQuantity = prevLevel + 1;
var maxCardQuantity = minCardQuantity + 100;
var awardLevel = {
id: sqlId,
awardId: 0,
certificateId: 0,
awardLvl: self.length + 1,
cardQuantity: minCardQuantity
};
self.changeLevelSelect(self.length + 1, minCardQuantity);
var row = self.getRow(awardLevel, minCardQuantity, maxCardQuantity);
tableBody.appendChild(row);
self.awards[length] = awardLevel;
self.length++;
}
}
}
request.open('GET', '_insert_award_lvl.php?level=' + awardLevel, true);
request.send();
location.reload();
}
讓我感到困惑的行為是對AwardLevel的處理
在聲明之前已對其進行了修改,即使對提升的理解不夠明確,我也不認為該方法可行。 此外,早期賦值運算符似乎是將變量賦給Int,而稍后它被賦值並用作關聯數組。
整個代碼有很多意想不到的混亂行為,而我對Javascript並不熟悉。
外部awardLevel
變量不會“在聲明之前進行修改”:從未聲明過。 另一個聲明僅對其聲明的功能有效(並且遮蓋了外部聲明)。
這意味着 :
awardLevel
有一個名為awardLvl
的屬性並不能使它變得更好 一種使所有這些稍微減少混亂的方法是:
// awardLevel = this.length + 1; remove that line
request.onreadystatechange = function(){
// don't change which is here
}
request.open('GET', '_insert_award_lvl.php?level=' + (this.length + 1), true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.