JavaScript 什么是辅助函数
执行其他函数的部分计算的函数被称为辅助函数。
它们根据其工作命名,即通过为某些涉及的计算提供描述性名称,使主函数更加干净、精确和可读。此外,一旦声明了辅助函数,它们可以在程序的任何位置使用,从而提高了代码的可重用性。
以下示例将清楚地说明辅助函数的用法。
示例 1: 假设我们需要编写一个函数,该函数以字符串数组 str 作为输入,并返回另一个数组 pal ,其中 pal[i] 为“Yes”如果 str[i] 是一个回文字符串,否则返回“No”。解决这个问题可以有两种方法,一种是不使用任何辅助函数,另一种是使用辅助函数。
JavaScript
<script>
// Without using helper functions
var str = ["gfg", "radar", "article", "geeksforgeeks", "racecar"];
var pal = [];
function palArray(str) {
for (let i = 0; i < str.length; i++) {
let temp = str[i];
let n = temp.length;
let check = true;
for (let j = 0; j < n / 2; j++) {
if (temp[j] != temp[n - j - 1]) {
check = false;
break;
}
}
if (check == true)
pal.push("Yes");
else
pal.push("No");
}
return pal;
}
palArray(str);
for (var i = 0; i < 5; i++) {
console.log(str[i] + " " + pal[i]);
}
</script>
输出:
gfg Yes
radar Yes
article No
geeksforgeeks No
racecar Yes
JavaScript
<script>
// Using helper functions
var str = ["gfg", "radar", "article", "geeksforgeeks", "racecar"];
var pal = [];
// Defining a helper function to check
// whether a string is palindrome or not
function checkPal(s){
let n = s.length;
for (let i = 0; i < n / 2; i++) {
if (s[i] != s[n - i - 1]) {
return false;
}
}
return true;
}
function palArray(str) {
for (let i = 0; i < str.length; i++) {
let temp = str[i];
if (checkPal(temp)==true)
pal.push("Yes");
else
pal.push("No");
}
return pal;
}
palArray(str);
for (var i = 0; i < 5; i++) {
console.log(str[i] + " " + pal[i]);
}
</script>
结果:
gfg Yes
radar Yes
article No
geeksforgeeks No
racecar Yes
示例2: 作为使用辅助函数的第二个示例,假设我们需要打印出球队中球员的身高、体重等各种参数的平均值。一种方法是重复编写相同的代码来计算每个参数的平均值,这会使代码变得混乱。
另一种方法是使用一个辅助函数来计算作为参数传递给它的数组的平均值。这个辅助函数可以在用于计算和打印平均值的主函数中调用,从而增加代码的可重用性。
JavaScript
<script>
//Without using helper functions
var heights=[172,166,180,175,170,182,176,165,162];
var weights=[68,70,74,70,65,82,75,66,60];
var ages=[20,19,23,19,20,21,24,22,21];
function printAverages(heights,weights,ages){
let heightSum=0,weightSum=0,ageSum=0;;
for(let i=0;i<heights.length;i++){
heightSum+=heights[i];
}
let avgHeight=heightSum/heights.length;
for(let i=0;i<weights.length;i++){
weightSum+=weights[i];
}
let avgWeight=weightSum/weights.length;
for(let i=0;i<ages.length;i++){
ageSum+=ages[i];
}
let avgAge=ageSum/ages.length;
console.log("Average Height - " + avgHeight);
console.log("Average Weight - " + avgWeight);
console.log("Average Age - " + avgAge);
}
printAverages(heights, weights, ages);
</script>
输出:
Average Height - 172
Average Weight - 70
Average Age - 21
JavaScript
<script>
//Using helper functions
var heights = [172, 166, 180, 175, 170, 182, 176, 165, 162];
var weights = [68, 70, 74, 70, 65, 82, 75, 66, 60];
var ages = [20, 19, 23, 19, 20, 21, 24, 22, 21];
//Defining a helper function that calculates average
function calcAverage(array) {
let sum = 0;
for (let i = 0; i < array.length; i++) {
sum += array[i];
}
return sum / array.length;
}
function printAverages(heights, weights, ages) {
let avgHeight = calcAverage(heights);
let avgWeight = calcAverage(weights);
let avgAge = calcAverage(ages);
console.log("Average Height - " + avgHeight);
console.log("Average Weight - " + avgWeight);
console.log("Average Age - " + avgAge);
}
printAverages(heights, weights, ages);
</script>
输出:
Average Height - 172
Average Weight - 70
Average Age - 21
现在,从上面的例子中可以清楚地看出,辅助函数如何帮助我们增强代码的可重用性,编写清晰的代码并改善代码的可读性。此外,一旦定义了辅助函数,它还可以用于其他需要相似计算的函数中。
因此,每当我们在任何函数或程序中多次找到相同的计算时,我们应该为该计算创建一个单独的(辅助)函数,并在调用该函数时而不是重复计算,以使代码更可读和干净。