我有一個很簡單的邏輯塊如下:AS:if語句評估錯誤
var divert:Number = 0;
for (var connection in _connections) {
trace("target: " + _connections[connection].target + " || i: " + (i + 1));
if(int(_connections[connection].target) != (i + 1)) {
trace("bad connection");
divert++;
}
}
的問題是,當i + 1
和int(_connections[connection].target)
相等的if語句返回true
如可在輸出中看到我的trace()
陳述如下:
target: 0 || i: 1
bad connection
target: 1 || i: 1
bad connection
任何人都可以看到什麼可能導致這種情況發生?
編輯:這是包含在爲每個請求的功能:
public function loadListener(i:Number, onProgress:Function, onComplete:Function):Void
{
trace("load listening to: "+i);
trace("next in queue: " + _queues["lower"][0] + " | " + _queues["upper"][0]);
_functions[i] = {onProgress:onProgress, onComplete:onComplete};
if (_queues["lower"][0] != i + 1 || _queues["upper"][0] != i + 1) {
var divert:Number = 0;
for (var connection in _connections) {
trace("target: "+_connections[connection].target+" || i: "+(i+1));
if(int(_connections[connection].target) != (i + 1)) {
trace("bad connection");
divert++;
}
}
if (divert == _connections.length) {
_diversion = i + 1;
trace("divert: "+divert+" || connections: "+_connections.length);
}
}
}
什麼是「我」在你的代碼,可以宇展現出更加複雜的例子? – 2012-03-28 10:37:03
@ DennisJaamann'i'只是一個變量,將其作爲參數傳遞給函數。代碼的其餘部分很長且冗長,與此問題幾乎無關。如果有幫助,我將用包含它的函數更新代碼。 – 2012-03-28 10:39:28
@sch'typeof(_connections [connection] .target)'返回'object',但它最初是一個數字,我將它轉換爲if語句中的一個數字int(_connections [connection] .target)'它的值是'0' – 2012-03-28 10:49:58