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

问题描述:

我想将一个数字(以毫秒为单位)传递给库模块中的函数。数字被搞砸了!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) */ 

认真???

*发生了什么?看起来它不知何故算出它是一个日期,并通过起始日期(毫秒计数的日期)?

LOL,Int32溢出#Fail。你看到的是你原来的[64位]整数的32个最低有效位;高位全部被剥离。

奇数本身,因为JS在内部使用Double;可能是JXA中的一个错误。 (它有很多这些。)

如果您喜欢JavaScript,请点击这里I strong建议使用Node.js代替。相比之下,JXA是垃圾,现在OSA技术处于维护模式,我不认为它会得到修复。

+0

谢谢。我会看看node.js,或者看看Python在这方面提供什么。 – Crashmeister