这个 CompareAmounts 函数到底在做什么? (分析)
What exactly is this CompareAmounts function doing? (Analysis)
我正在分析一段很长的 JS 代码,但我是 JS 新手。尽管我尽了最大努力,但我只能分析大约 85% 的代码。这个功能 CompareAmounts 仍然在躲避我。这个JS应该在银行网页上运行,我不明白这个功能是做什么的。任何人都可以向我指出功能吗?
function CompareAmounts(a, b) {
var c = /^\-/gi;
var d = "";
var e = "";
if (a.match(c)) {
a = a.replace(c, "");
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) - parseInt(b)).toString();
if (parseInt(a[0]) < 0) {
a[0] = (a[0] * -1).toString();
} else {
d = "-";
e = "";
}
} else {
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) + parseInt(b)).toString();
}
if (a[0].length > 3) {
var f = a[0].substr(0, a[0].length - 3);
var g = a[0].substr(a[0].length - 3, a[0].length);
a[0] = f + "." + g;
}
a = d + a.toString() + e;
return a;
}
这是一种将一个数字与另一个数字相加的相当复杂的方法 - a + b
。
包含额外的逻辑将a
解析为字符串形式的欧式数字(去掉所有.
,取,
之前的部分,然后重构之后生成欧洲数字格式(如果 a
或结果大于 999999
则不正确)。
它没有用于解析 b
的相同逻辑,所以我假设 b
是作为数字值而不是字符串传入的。
function CompareAmounts(a, b) {
var c = /^\-/gi;
var d = "";
var e = "";
if (a.match(c)) {
a = a.replace(c, "");
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) - parseInt(b)).toString();
if (parseInt(a[0]) < 0) {
a[0] = (a[0] * -1).toString();
} else {
d = "-";
e = "";
}
} else {
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) + parseInt(b)).toString();
}
if (a[0].length > 3) {
var f = a[0].substr(0, a[0].length - 3);
var g = a[0].substr(a[0].length - 3, a[0].length);
a[0] = f + "." + g;
}
a = d + a.toString() + e;
return a;
}
snippet.log(CompareAmounts("1.234,55", 12));
snippet.log(CompareAmounts("-10", 5));
snippet.log(CompareAmounts("50.400,80", 100));
snippet.log(CompareAmounts("1.000.000,00", 1)); // incorrect result
snippet.log(CompareAmounts("-50,80", 100)); // incorrect result
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
我正在分析一段很长的 JS 代码,但我是 JS 新手。尽管我尽了最大努力,但我只能分析大约 85% 的代码。这个功能 CompareAmounts 仍然在躲避我。这个JS应该在银行网页上运行,我不明白这个功能是做什么的。任何人都可以向我指出功能吗?
function CompareAmounts(a, b) {
var c = /^\-/gi;
var d = "";
var e = "";
if (a.match(c)) {
a = a.replace(c, "");
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) - parseInt(b)).toString();
if (parseInt(a[0]) < 0) {
a[0] = (a[0] * -1).toString();
} else {
d = "-";
e = "";
}
} else {
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) + parseInt(b)).toString();
}
if (a[0].length > 3) {
var f = a[0].substr(0, a[0].length - 3);
var g = a[0].substr(a[0].length - 3, a[0].length);
a[0] = f + "." + g;
}
a = d + a.toString() + e;
return a;
}
这是一种将一个数字与另一个数字相加的相当复杂的方法 - a + b
。
包含额外的逻辑将a
解析为字符串形式的欧式数字(去掉所有.
,取,
之前的部分,然后重构之后生成欧洲数字格式(如果 a
或结果大于 999999
则不正确)。
它没有用于解析 b
的相同逻辑,所以我假设 b
是作为数字值而不是字符串传入的。
function CompareAmounts(a, b) {
var c = /^\-/gi;
var d = "";
var e = "";
if (a.match(c)) {
a = a.replace(c, "");
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) - parseInt(b)).toString();
if (parseInt(a[0]) < 0) {
a[0] = (a[0] * -1).toString();
} else {
d = "-";
e = "";
}
} else {
a = a.replace(".", "");
a = a.split(",");
a[0] = (parseInt(a[0]) + parseInt(b)).toString();
}
if (a[0].length > 3) {
var f = a[0].substr(0, a[0].length - 3);
var g = a[0].substr(a[0].length - 3, a[0].length);
a[0] = f + "." + g;
}
a = d + a.toString() + e;
return a;
}
snippet.log(CompareAmounts("1.234,55", 12));
snippet.log(CompareAmounts("-10", 5));
snippet.log(CompareAmounts("50.400,80", 100));
snippet.log(CompareAmounts("1.000.000,00", 1)); // incorrect result
snippet.log(CompareAmounts("-50,80", 100)); // incorrect result
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>