[英]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.