我有一个看起来像这样的自定义对象
var locationsMap = {
"obj1":[1],
"obj2":[7],
"obj3":[21]
}
我可以这样调用这个自定义对象:
var loc = "obj2";
alert(locationsMap[loc][0]);
这在 jsFiddle 中工作得很好;但是,当我将此逻辑嵌入到 NetSuite 的代码中时,loc 变为未定义:
nlapiLogExecution('debug',"Location: "+ loc); //works fine
nlapiLogExecution('debug','Location: '+locationsMap[loc][0]); //throws exception
在 NetSuite 调试器中:
$ nlapiLogExecution('debug','Location: '+locationsMap[loc][0]);
> TypeError: Cannot read property "0" from undefined
为什么当我通过 locationsMap
对象调用它时 loc 显示为未定义,而不是
当我单独调用它时未定义?
--编辑--
调用 nlapiLogExecution('debug','Location: '+locationsMap['obj2'][0]);
按预期工作。
--编辑2--
由于这些问题,我最终放弃了这种方法,尽管我仍然有兴趣找出为什么会出现这种行为。
最佳答案
我将其放入 NetSuite 调试器和 SuiteCloud IDE 调试器中,一切都正确返回。时间已经解决了问题。
var locationsMap = {
"obj1":[1],
"obj2":[7],
"obj3":[21]
};
var loc = "obj2";
nlapiLogExecution('debug',"Location: "+ loc);
nlapiLogExecution('debug','Location: '+locationsMap[loc][0]);
debug Location: obj2 10/30/2014 20:05:41.303
debug Location: 7 10/30/2014 20:05:43.284
metrics usage 0, time 20096 10/30/2014 20:05:43.284
关于javascript - 调用自定义对象时返回 undefined variable ,否则很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318924/