提问人:Just1.0 提问时间:10/12/2023 最后编辑:BarmarJust1.0 更新时间:10/12/2023 访问量:59
Javascript:为什么“10-2”返回“-8”而不是“8” [关闭]
Javascript : Why does "10-2" returns "-8" instead of "8" [closed]
问:
这是我的代码:
function jeu(x, y) {
let v1 = x,
v2 = x;
x > y ? v1 = y : v2 = y;
alert(v2 - v1);
}
jeu(2, 10);
有 2 个参数:和 。x
y
第一行是最小的值和最大的值,你可以理解。但是当我使用一些数字时,例如,代码返回一个负数,而我正在执行“最大 - 最小”。v1
v2
jeu(2,10)
有谁知道它为什么这样做?(对不起,我的英语不好)(我不能把它像代码一样,不知道为什么。
答:
0赞
Luis
10/12/2023
#1
在您的情况下,被视为字符串,而不是数字。"10"
"2"
如果要执行数字减法,则应使用或类似以下命令将字符串转换为数字:parseInt()
parseFloat()
function jeu(x, y) {
let v1 = parseInt(x, 10); // Convert x to an integer
let v2 = parseInt(x, 10); // Convert x to an integer
x > y ? v1 = parseInt(y, 10) : v2 = parseInt(y, 10);
alert(v2 - v1);
}
jeu(2, 10);
2赞
Mr. Polywhirl
10/12/2023
#2
与其创建两个难以理解的变量,不如将它们命名为 和 。为它们分配条件逻辑。v1
v2
min
max
function jeu(x, y) {
const
max = x > y ? x : y,
min = x < y ? x : y;
console.log(JSON.stringify({ min, max }));
return max - min;
}
console.log(jeu(2, 10) === jeu(10, 2));
可能有点矫枉过正,但你也可以使用:Math.min
Math.max
function jeu(x, y) {
const
max = Math.max(x, y)
min = Math.min(x, y);
console.log(JSON.stringify({ min, max }));
return max - min;
}
console.log(jeu(2, 10) === jeu(10, 2));
更简单的版本是调用:Math.abs
function jeu(x, y) {
return Math.abs(x - y);
}
console.log(jeu(2, 10) === jeu(10, 2));
评论
Math.abs(...)
Math.abs(x - y)
x
y
Math.min()
Math.max()
if (x > y)
8
-8