代码使用三元运算符,但不能使用if else语句

时间:2019-04-11 04:13:23

标签: javascript ecmascript-6 ternary-operator

此javascript程序可以按预期与三元运算符一起使用,但不能与if else语句一起使用。我在做什么错了?

我正在尝试解决一些基本的javascript练习,但是我一直陷于这个问题。 https://www.w3resource.com/javascript-exercises/javascript-basic-exercise-74.php

//Working code with ternary operator
    function all_max(nums) {
      var max_val = nums[0] > nums[2] ? nums[0] : nums[2];

      nums[0] = max_val;
      nums[1] = max_val;
      nums[2] = max_val;

      return nums;
      }
    console.log(all_max([20, 30, 40]));
    console.log(all_max([-7, -9, 0]));
    console.log(all_max([12, 10, 3]));

//使用if-else语句

  function all_max(nums) {
     if (var max_val = nums[0] > nums[2]) {
     return nums[0];
    } else {
     return nums[2];
  }

     nums[0] = max_value ;
     nums[1] = max_value ;
     nums[2] = max_value ;

return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));

3 个答案:

答案 0 :(得分:3)

您应该在if / else语句的主体中而不是在比较中分配值,所以这样的事情应该对您有用:

function all_max(nums) {
  let max_val = 0
  if (nums[0] > nums[2]) {
    max_val = nums[0];
  } else {
    max_val = nums[2];
  }
  nums[0] = max_val;
  nums[1] = max_val;
  nums[2] = max_val;

  return nums;
}

console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));

答案 1 :(得分:1)

以下代码有效

      function all_max(nums) {
let max_val = nums[0] > nums[2]
     if (max_val) {
     return nums[0];
    } else {
     return nums[2];
  }

     nums[0] = max_value ;
     nums[1] = max_value ;
     nums[2] = max_value ;

return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));

在if条件之外计算max_val并将结果放在if条件中 让max_val = nums [0]> nums [2]

答案 2 :(得分:0)

不允许在if语句中使用变量声明。删除它。

如果您只想要最大值,请尝试

 function all_max(nums) {
   if (nums[0] > nums[2]) {
         max_value =  nums[0];
   } else {
         max_value = nums[2];
   }
   return max_value;
 } 
 console.log(all_max([20, 30, 40]));
 console.log(all_max([-7, -9, 0]));
 console.log(all_max([12, 10, 3]));

如果您希望将数组中的所有元素设置为最大值,请使用此

function all_max(nums) {
     if (nums[0] > nums[2]) {
             max_value =  nums[0];
     } else {
             max_value = nums[2];
     }
     nums[0] = max_value;
     nums[1] = max_value;
     nums[2] = max_value;
     return nums;
}
console.log(all_max([20, 30, 40]));
console.log(all_max([-7, -9, 0]));
console.log(all_max([12, 10, 3]));