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) */

Серьезно ???

Что за * происходит? Похоже, он каким-то образом выясняет, что это дата, и передает дату происхождения (дата, с которой отсчитываются мс)?


person Crashmeister    schedule 17.08.2017    source источник


Ответы (1)


LOL, переполнение Int32 #Fail. То, что вы видите, это 32 наименее значащих бита исходного [64-битного] целого числа; все старшие биты были удалены.

Странно само по себе, поскольку JS использует Double внутри; предположительно ошибка в JXA. (У него их много.)

Если вам нравится JavaScript, я настоятельно рекомендую вместо него использовать Node.js. JXA — ерунда по сравнению с ней, и с технологиями OSA, которые сейчас находятся в режиме обслуживания, я не думаю, что это когда-либо будет исправлено.

person has    schedule 21.08.2017
comment
Спасибо. Я рассмотрю node.js или, возможно, посмотрю, что Python может предложить в этом отношении. - person Crashmeister; 22.08.2017