1

我有一个看起来像的自定义对象

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--

由于这些问题,我最终放弃了这种方法,尽管我仍然有兴趣找出为什么会出现这种行为。

4

1 回答 1

0

我把它扔进了 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
于 2014-10-31T00:07:28.813 回答