Javascript:为什么“10-2”返回“-8”而不是“8”

问题描述 投票:0回答:2

这是我的代码:

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)
这样的数字时,代码会返回负数,而我正在执行“最大 - 最小”。

有人知道为什么这样做吗? (抱歉我的英语不好)(我不能把这个像代码一样,我不知道为什么。

javascript html function variables numbers
2个回答
0
投票

在您的情况下,“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);

0
投票

不要创建两个难以理解的变量

v1
v2
,而是将它们命名为
min
max
。为它们分配条件逻辑。

function jeu(x, y) {
  let max = x > y ? x : y;
  let min = x < y ? 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));

© www.soinside.com 2019 - 2024. All rights reserved.