Javascript 如何编写一个通用函数,将一个参数传递给然后多次调用的函数

Javascript 如何编写一个通用函数,将一个参数传递给然后多次调用的函数,javascript,Javascript,我一直在做作业: 创建一个通用函数,该函数在 web页面,后跟警报,并接收数据作为输出 输入参数。 使用该功能输出每行倒计时和警报。 请注意,您正在向浏览器输出倒计时 这一次窗口,没有警报 警报仅用于指示何时输出下一行 我需要帮助,如何找到一个只传递一个参数,然后可以调用13次的泛型函数。编写输出倒计时数值部分的for循环。如果我理解正确,您希望创建一个函数,允许您传递一次数据,然后可以调用该函数逐行输出数据 这样做是不可能的,但这种方法几乎是一样的: function createOutput

我一直在做作业:

创建一个通用函数,该函数在 web页面,后跟警报,并接收数据作为输出 输入参数。
使用该功能输出每行倒计时和警报。
请注意,您正在向浏览器输出倒计时 这一次窗口,没有警报
警报仅用于指示何时输出下一行


我需要帮助,如何找到一个只传递一个参数,然后可以调用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
    循环,而不是一个函数。ba
    for
    的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);
    }