【发布时间】:2021-11-01 13:44:58
【问题描述】:
我正在研究一些 JS 代码,与其他语言相比,这对我来说没有任何意义。 首先,有一个声明的日期对象,我理解,
$ns.constant = {
date: {}, /* Input date */
};
然后有像下面这样的函数,其中将日期传递给函数。这是我不明白的。在其他语言中,当您将变量传递给函数时,该函数会创建一个函数本地的新变量,并且该函数会作用于该局部变量。
此函数返回 date.julian。但它也添加了其他日期,例如 date.j2000 和 date.1950。在我对其他语言的理解中,这些不会被返回,因为它们是函数本地的日期对象。在我看来,为了将这些值放入日期常量中,您必须返回函数创建的整个日期对象,而不仅仅是 date.julian。或者,js只是看到那个日期被传递了,不知怎的就知道它是日期常数?
这个函数是在修改日期常量、函数的本地对象还是什么?
谢谢
$ns.julian.calc = function (date) {
var centuries;
var year;
var month;
var b = 0;
var c;
var e;
year = date.year + 4800;
if (date.year < 0) {
year += 1;
}
month = date.month;
if (month <= 2) {
month += 12;
year -= 1;
}
e = Math.floor ((306 * (month + 1)) / 10);
centuries = Math.floor (year / 100);
if (date.year <= 1582) {
if (date.year == 1582) {
if (date.month < 10) {
b = -38;
}
if (date.month > 10 || date.day >= 15) {
b = Math.floor ((centuries / 4) - centuries);
}
}
else { b = -38; }
} else {
b = Math.floor ((centuries / 4) - centuries);
}
c = Math.floor ((36525 * year) / 100);
date.julianDate = b + c + e + date.day - 32167.5;
date.julianTime = (3600.0 * date.hours + 60.0 * date.minutes + date.seconds) / 86400.0;
date.julian = date.julianDate + date.julianTime;
date.j2000 = 2000.0 + (date.julian - $const.j2000) / 365.25;
date.b1950 = 1950.0 + (date.julian - $const.b1950) / 365.25;
date.j1900 = 1900.0 + (date.julian - $const.j1900) / 365.25;
return date.julian;
};
【问题讨论】:
-
JavaScript 中的对象“通过引用”传递给函数。它就像一个指向实际对象的链接,而不是它的本地副本。这是出于性能原因。查看javascript.info 或these other sites 了解详情。
标签: javascript javascript-objects