Javascript 如何编写一个通用函数,将一个参数传递给然后多次调用的函数
我一直在做作业: 创建一个通用函数,该函数在 web页面,后跟警报,并接收数据作为输出 输入参数。Javascript 如何编写一个通用函数,将一个参数传递给然后多次调用的函数,javascript,Javascript,我一直在做作业: 创建一个通用函数,该函数在 web页面,后跟警报,并接收数据作为输出 输入参数。 使用该功能输出每行倒计时和警报。 请注意,您正在向浏览器输出倒计时 这一次窗口,没有警报 警报仅用于指示何时输出下一行 我需要帮助,如何找到一个只传递一个参数,然后可以调用13次的泛型函数。编写输出倒计时数值部分的for循环。如果我理解正确,您希望创建一个函数,允许您传递一次数据,然后可以调用该函数逐行输出数据 这样做是不可能的,但这种方法几乎是一样的: function createOutput
使用该功能输出每行倒计时和警报。
请注意,您正在向浏览器输出倒计时 这一次窗口,没有警报
警报仅用于指示何时输出下一行
我需要帮助,如何找到一个只传递一个参数,然后可以调用13次的泛型函数。编写输出倒计时数值部分的for循环。如果我理解正确,您希望创建一个函数,允许您传递一次数据,然后可以调用该函数逐行输出数据 这样做是不可能的,但这种方法几乎是一样的:
function createOutputFunction(dataArray)
{
return function() {
document.write(dataArray.shift()); // This writes the first element of the dataArray to the browser
};
}
//It can then be used like this
outputFunction = createOutputFunction(["Banana", "Mango", "Apple"]);
outputFunction();
outputFunction();
outputFunction();
“createOutputFunction”函数返回一个函数,该函数可以读取“dataArray”变量,并在每次调用它时打印它的第一个元素。我认为这里的关键是它们要求“泛型” 这意味着一个函数不需要知道任何东西,只需要知道它在做什么。
它也通常意味着它不应该记住它上次做了什么,或者下次调用它时它将要做什么(除非你编写了一个专门用于记忆的通用结构) 现在,规范的措辞很糟糕,但它是一个通用函数,它:
var writeInputAndAlert = function (input) {
// never, ever, ***ever*** use .write / .writeLn in the real world
document.writeLn(input);
window.alert("next");
};
如果我是你的老师,我会重写window.alert来处理非泛型部分。它是非通用的,因为它知道程序的规则,它能记住你在哪里,你要去哪里
var countFrom = 100,
currentCount = countFrom,
countTo = 0;
var nextCount = function () {
currentCount -= 1;
if (currentCount >= countTo) { writeInputAndAlert(currentCount); }
};
window.alert = nextCount;
编辑
var countdownArray=[“十”,“九”,“八”,“点火启动”,“起飞”,“我们已经起飞”],
i=0,end=countdownArray.length,text=“”,
printAndAlert=功能(项目){
警惕();
文件。书写(项目);
};
对于(;i
这真的不需要比那更难。printAndAlert
是一个通用函数,它接受一个输入,写入该输入并触发警报。在
for
循环中调用它,每个值都在数组中。这就是全部。至少发布一些您尝试过的代码(var count=10;count>=1;count--){window.alert();document.write(count+“
”)我用它来写for循环谢谢你,谢谢你的解释。整个练习是创建一个nasa风格的倒计时十,九,八,点火开始,起飞,我们已经起飞。要写一个窗口警报,警报只是用来通知何时输出下一行。所以我要用for循环来显示倒计时的数字部分。我知道如何编写for循环,但当我添加其余代码时,我无法使整个代码正常工作。因此,如果您能帮助我如何开始,然后添加for循环,那应该是什么样子的。好的,按照您所说的,我已经编写了代码。我不知道如何在函数输出中拆分行,这样它们就不会打印在同一行上linefor(var count=10;count>=1;count--){window.alert();document.write(count+“
”)函数createOutputFunction(dataArray){return函数(){document.write(dataArray.shift();};};}outputFunction=createOutputFunction([“点火开始”、“升空”、“WehaveLiftOff”));outputFunction();outputFunction();outputFunction();将
添加到“点火开始”的末尾etc字符串,就像你对计数部分所做的那样谢谢你,谢谢你的解释。整个练习是创建一个nasa风格的倒计时10,9 8,点火开始,起飞,我们已经起飞。要编写一个窗口警报,警报仅用于通知何时输出下一行。所以我将使用for循环来显示倒计时。我知道如何编写for循环,但是当我添加其余的代码时,我无法使整个代码正常工作。因此,如果你能帮助我如何开始它,然后添加for循环,那应该是什么样子的。好吧,看看我下面放的函数。你可以将它变成一个
for
循环,而不是一个函数。bafor
的sic布局可以向上(+=1)
或向下(=1)
。我们向下。它看起来像:var start=100,end=0,i;for(i=start;i>=end;i-=1){doStuff(i);}
。看看for循环,想想如何写出这些内容。写行的通用函数不在乎你给它什么。所以你需要做的就是给它一些东西。如果你使用过数组,那么这应该很简单:[“Lift Off”,“One”,“Two”,“Three”]
for(var count=10;count>=1;count--){window.alert();document.write(count+“”)}这是我在for循环中使用的,我知道如何使用数组,但我要传递13个参数。赋值不希望我列出13个参数,而只列出一个exapm;effunction test_me(一个)
var countdownArray = ["ten", "nine", "eight", "Ignition Start", "Lift Off", "We have Lift Off"],
i = 0, end = countdownArray.length, text = "",
printAndAlert = function (item) {
alert();
document.write(item);
};
for (; i < end; i += 1) {
text = countdownArray[i];
printAndAlert(text);
}