这是问题所在,我有一个JS代码块,出于速度原因,我非常想保持其内联。过去这没有出现问题,但是对于此特定功能,这种情况正在发生。我正在使用PHP输出缓冲区通过短代码来呈现它。
呈现的代码:
function get_price(arr, val) {
var price = Object.keys(arr).reduce((a, c) => {
var s = c.trim();
if (/\d+\-\d+/.test(s)) {
var range = s.split("-");
if (+val >= parseInt(range[0]) && +val <= parseInt(range[1])) {
a = arr[c];
}
} else {
s = s.replace(/\D/g, "");
if (+val >= +s) {
a = arr[c];
}
}
return a;
}, 0);
return price;
}
发送的代码:
function get_price(arr, val) {
var price = Object.keys(arr).reduce((a, c) => {
var s = c.trim();
if (/\d+\-\d+/.test(s)) {
var range = s.split("-");
if (+val >= parseInt(range[0]) && +val <= parseInt(range[1])) {
a = arr[c];
}
} else {
s = s.replace(/\D/g, "");
if (+val >= +s) {
a = arr[c];
}
}
return a;
}, 0);
return price;
}
我也很想知道为什么会发生这种情况,所以请大家给予帮助!
如果需要,我还可以发送更多代码,但是不想用不必要的代码来重载我的问题。
答案 0 :(得分:0)
所以...不知道为什么这行得通,但我将2个有问题的区域转换为JS vars,然后不再对代码进行编码。
function get_price(arr, val) {
var price = Object.keys(arr).reduce((a, c) => {
var s = c.trim();
if (/\d+\-\d+/.test(s)) {
var range = s.split("-");
var t1 = parseInt(range[1]); // new added var
var t2 = arr[c]; // new added var
if (+val >= parseInt(range[0]) && +val <= t1) { // replaced code with t1 here
a = t2; // replaced code with t2 here
}
} else {
s = s.replace(/\D/g, "");
if (+val >= +s) {
a = arr[c];
}
}
return a;
}, 0);
return price;
}
如果有人知道为什么并且想通过分享他们的知识来帮助宇宙,那就继续吧。如果没有的话,希望这对某人有帮助!