Bjo*_*now -1 javascript if-statement function
我正在创建一个功能,应该为经销商和玩家添加三张牌的总和.然后应该评估这些值,并且从函数返回的内容应该是推荐,"安全","停止","黑色插孔"或"被破坏".将有两种不同的功能来评估玩家的牌和经销商的牌.请查看我编写的代码.我想我已经把它想象成代码,我只有一个问题.
function printResult(p1, p2, p3, d1, d2, d3) {
  var x = p1 + p2 + p3; 
  var ab = "player:" + " " + player(x);
  var y = d1 + d2 + d3;
  var de = "dealer:" + " " + dealer(y);
  return ab + ", " + de;
 };
function player(p1, p2, p3) {
  var summa = p1 + p2 + p3
  var result;
  if (summa < 21)
  result = "safe";
  else if (summa = 21)
    result = "black jack";
  else
    result = "busted";
  return result;
}
function dealer(d1, d2, d3) {
  var summa = d1 + d2 + d3;
  var dealer;
  if (summa < 17)
  dealer =  "safe";
else if (summa >= 17 && summa <= 20)
  dealer = "stop";
else if (summa == 21)
  dealer = "black jack";
else 
  dealer = "busted";
return dealer; 
}
当我打印printResult(4,8,1,3,8,4)时,它给了我一个错误的建议(玩家在它应该安全时被破坏).
但是,如果我将代码更改为以下代码,那么它可以正常工作.
function printResult(p1, p2, p3, d1, d2, d3) {
  var x = p1 + p2 + p3; 
  var ab = "player:" + " " + player(p1, p2, p3);
  var y = d1 + d2 + d3;
  var de = "dealer:" + " " + dealer(d1, d2, d3);
  return ab + ", " + de;
 };
我不明白为什么结果会有差异?Ps,在后面的代码中我理解我不必将x和y作为变量,它们可以被删除.
提前致谢!
它们是有区别的:
var x = p1 + p2 + p3; 
var ab = "player: " + player(x);
您正在player使用一个参数调用,该参数x包含变量的总和.这是有效的代码,但现在是其他参数undefined.为了说明,您的功能实际上看起来像:
function player(p1, p2, p3) {
  var summa = p1 + p2 + p3 //p1 is x, p2 is undefined, p3 is undefined
  ...
  else
    result = "busted";
  return result;
}
让我们说x = 2.当您尝试添加2 + undefined + undefinedJavaScript时将返回NaN(非数字),这就是变量summa将被设置为的内容.从该功能出来的唯一方法是现在通过"破坏",因为你的if-else的其他条件都没有得到满足(只有其他).
这可以通过以下方式解决:
var summa = (p1 + p2 + p3) || (p1 + p2) || p1;
这基本上意味着您只添加传递给函数的参数,即存在的参数.
| 归档时间: | 
 | 
| 查看次数: | 106 次 | 
| 最近记录: |