这是我的代码:
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)
这样的数字时,代码会返回负数,而我正在执行“最大 - 最小”。
有人知道为什么这样做吗? (抱歉我的英语不好)(我不能把这个像代码一样,我不知道为什么。
在您的情况下,“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);
不要创建两个难以理解的变量
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));