调用自定义对象时,变量返回undefined,否则返回

时间:2013-05-01 13:22:00

标签: javascript netsuite

我有一个看起来像

的自定义对象
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--

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

1 个答案:

答案 0 :(得分: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