JXA:当作为参数传递给库模块时,数字会发生变化?



我正在尝试将一个数字(以毫秒为单位的日期(传递给库模块中的函数。数字搞砸了!

下面是一个简单的外观(函数 MailUtils.showNum 只有一行,相同的日志调用如下所示(:

n = Number(todayMs - mbRetMs);
Logger.logDebug("Num = " + n + "; as Date = " + new Date(n));
MailUtils.showNum(n);
Log:
/* Num = 1500396760628; as Date = Tue Jul 18 2017 12:52:40 GMT-0400 (EDT) */
/* Num = 1453174324; as Date = Sat Jan 17 1970 14:39:34 GMT-0500 (EST) */

认真地???

* 发生了什么?看起来它以某种方式确定它是一个日期并通过了原点日期(ms 计数的日期(?

LOL,Int32 Overflow #Fail。您看到的是原始 [64 位] 整数的 32 个最低有效位;高位都被剥离了。

这本身很奇怪,因为JS在内部使用Double;大概是JXA中的一个错误。(它有很多这样的。

如果你喜欢JavaScript,我强烈建议你改用Node.js。相比之下,JXA是垃圾,而且OSA技术现在处于维护模式,我认为它永远不会得到修复。

最新更新