如何改进我的代码(函数中的连接参数)-JavaScript初学者

如何改进我的代码(函数中的连接参数)-JavaScript初学者,javascript,function,Javascript,Function,我开始学习如何编写代码,并创建了一个简单的程序来评估测试 问题是,我必须为每个“测试”更改四个参数,以使代码正常工作。我可以改变什么,这样我只需要改变两个 我希望我能解释清楚,英语不是我的第一语言。很抱歉,我的标题没有文字说明,但我不知道如何表达它 function score (pointsObt, pointsTest) { return 100 / pointsTest * pointsObt; }; function verdict (pointsObt, pointsTest

我开始学习如何编写代码,并创建了一个简单的程序来评估测试

问题是,我必须为每个“测试”更改四个参数,以使代码正常工作。我可以改变什么,这样我只需要改变两个

我希望我能解释清楚,英语不是我的第一语言。很抱歉,我的标题没有文字说明,但我不知道如何表达它

function score (pointsObt, pointsTest) {
    return 100 / pointsTest * pointsObt;
};

function verdict (pointsObt, pointsTest){
  if (score (pointsObt, pointsTest) >= 75) {
    return 'Yay, you did it'
  }
  else {
    return "You did it! But bad."
  }
};

console.log (verdict(50, 50));
console.log ('Your score: ' + score(50, 50));


您可以使用一个变量使其工作

function score (pointsObt, pointsTest) {
    return 100 / pointsTest * pointsObt;
};

function verdict (pointsObt, pointsTest){
  if (score (pointsObt, pointsTest) >= 75) {
    return 'Yay, you did it'
  }
  else {
    return "You did it! But bad."
  }
};

var pointsObt= 50;
var pointsTest= 50;

console.log (verdict(pointsObt, pointsTest));
console.log ('Your score: ' + score(pointsObt, pointsTest));

你可以用一个函数完成所有这些。无需使用另一个函数
score
,并从中返回

One
函数将分别为您提供评分和判决

仅使用一个函数进行评分和裁决

//全局变量
让他们得分//分数将存储在这里
让myNumber=50//更改此数字只能看到不同的判决和分数
函数判定(pointsObt、pointsTest){
//得分
percScore=100/点SOBT*pointsTest
//判决书
如果(percScore>=75){
返回“耶,你做到了”
}否则{
return“你做到了!但很糟糕。”
}
};
日志(裁决(myNumber,myNumber));

log('Your score:'+percScore)
您可以使
裁决
函数在一个数据结构中同时返回分数和裁决。可以是一个具有两个值的数组,也可以是一个具有两个属性的普通对象。以下是后一种想法的工作原理:

函数得分(pointsObt,pointsTest){
返回100/pointsTest*pointsObt;
};
函数判定(pointsObt、pointsTest){
让百分比=分数(点Sobt、点Stest);
让信息=百分比>=75?“耶,你们做到了”:“你们做到了!但很糟糕。”;
返回{百分比,消息};
};
设{百分比,消息}=判决(50,50);
console.log(消息);

console.log(“您的分数:”+百分比)你是对的,这可以简化很多

这只是一种选择

//合并这两个函数
函数判定(pointsObt、pointsTest){
//获得分数(好的,百分比)
var得分=(100/点测试*点测试);
//使用三元,因为只有两个选项可以
//确定要打印的内容。
var msg=(分数>=75)?“耶,你们做到了”:“你们做到了!但很糟糕。”;
//如果需要,则只需要一个console.log()调用
//在正确的位置使用\n(新行)
日志(msg+“\n您的分数:“+score+”%”;
};
//调用3个不同的结果。
判决书(50,50);
判决书(5,50);
判决书(40,50);
//你甚至可以这样做。将所有结果放入
//一个数组,然后循环该数组。假设所有结果
//超出最大值50。
var结果=[45,35,26,48];

结果:forEach(r=>判决(r,50))
你可以在
裁决
中执行所有
评分
功能,以避免使用单独的功能。但他想打印评分和裁决,而不仅仅是裁决。他问的是如何避免重复这些参数。@Barmar OP询问我正在做的事情的建议。如果他只想得到分数,没人知道。我本来打算写一个这样的答案,但@trincot已经做了。丹威尔作为一名程序员新手正在寻求建议。这个答案指出了一个关键,那就是只叫“分数”一次。在你的问题中,你问了如何避免四次给出数字。实际上,每个数字只给出两次。有两个独立的数字,分子和分母,它们恰好都是50,因此你会看到它们4次,但实际上是分子两次,分母两次。