【发布时间】:2010-11-15 11:03:47
【问题描述】:
所以,这可能是一个非常愚蠢的问题,但我显然在这里遗漏了一些东西。
考虑以下代码:
var selectedItems = [];
selectedItems.push("0ce49e98-a8aa-46ad-bc25-3a49d475e9d3");
//fyi, selectedItems[selectedItems.length] = "0ce49e98-a8aa-46ad-bc25-3a49d475e9d3"; produced the same result.
最后selectedItems的内容是这样的:
Name Value Type
------------- -------------------------------------- ------
selectedItems {...} Object
- [0] "0ce49e98-a8aa-46ad-bc25-3a49d475e9d3" String
- length 1 Long
但如果我只是尝试在同一个字符串上调用 split(),如下所示:
selectedItems = "0ce49e98-a8aa-46ad-bc25-3a49d475e9d3".split(",")
现在我假设的数组的内容看起来像这样(缺少长度):
Name Value Type
------------- -------------------------------------- ------
selectedItems {...} Object
- [0] "0ce49e98-a8aa-46ad-bc25-3a49d475e9d3" String
知道有什么区别吗?这里到底发生了什么?
提前致谢。
更新: 我感觉这两个结果值实际上在结构上有所不同,因为当我尝试将它传递给服务器端 WebMethod 时(没有实际的错误消息,但我知道通话失败)。我不确定。
更新 #2 我注意到以这种方式设置 targetLocationIdList 会导致“快速监视”窗口中不显示“长度”属性:
var params =
{
jobId : args.get_JobId(),
targetLocationIdList : retVal.split(',')
};
但此结果包含快速观察窗口中显示的“长度”属性:
var retValArr = [];
retValArr = retVal.split(',');
var params =
{
jobId : args.get_JobId(),
targetLocationIdList : retValArr
};
【问题讨论】:
-
"0ce49e98-a8aa-46ad-bc25-3a49d475e9d3".split(",").length === 1
-
您能否发布任何示例代码,表明这实际上是您的调试器以外的其他地方的问题?
标签: asp.net javascript visual-studio ajax arrays