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

オブジェクトを介して呼び出すと loc が undefined と表示されるlocationsMapのに、それ自体を呼び出すと undefined と表示されないのはなぜですか?

- 編集 -

呼び出し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 に答える