【问题标题】:Javascript functions in an array数组中的 Javascript 函数
【发布时间】:2013-03-26 05:55:37
【问题描述】:

我的教授要求我编写一个简单的 Javascript 程序,该程序使用随机数在二维表中显示简单的数学问题及其答案。之前他给我们举了一个使用函数写入表的例子:

function RandomGen() {
Random = math.floor(Math.random()*60);
    document.writeln("<th>");
       document.writeln(Random);
       document.writeln("</th>");
}
RandomGen();

为了使用数组,我可以这样做吗?

var RandomArray [

RandomGen(),
second_function(),
third_function(),
forth_function(),
]

RandomArray[0];

如何将函数附加在一起以写入表格?

【问题讨论】:

  • 您是否尝试将函数存储到数组中,然后从数组中运行它们?
  • 是的,并且根据教授的要求让函数也编写 html。

标签: javascript arrays function random


【解决方案1】:

你几乎明白了。正确的语法是:

var randomArray = [    
  RandomGen,
  second_function,
  third_function,
  forth_function
];

randomArray[0](); // this calls RandomGen
randomArray[1](); // this calls second_function

记住基本语法规则:

  1. 不带括号的函数名是函数引用。它的行为就像任何引用一样,因此可以被视为变量。这意味着您可以将其分配给另一个变量,将其传递给另一个函数,然后像上面的示例一样将其填充到一个数组中。

  2. 将括号() 添加到函数引用会导致调用该函数。函数引用是普通的旧函数名、存储在另一个变量中还是存储在数组中都没有关系。

【讨论】:

    【解决方案2】:

    你可以将函数存储在一个变量中,然后将变量放入一个数组中,然后从数组中访问它们来调用它们。

    var add = function(x,y){ return x + y; };
    var multiply = function(x,y){ return x * y; };
    var maths = [];
    maths.push(add);
    maths.push(multiply);
    maths[0](1,2);//3
    maths[1](3,4);//12
    

    相反,您可以使用对象来执行此操作。

    var maths = {};
    maths.add = function(x,y){ return x + y; };
    var four = maths.add(1,3);
    

    显然,您必须修改这些以匹配您的确切情况。

    【讨论】:

    • 明白了,我该如何写入表格?
    • 我一直按 Enter sorrylol document.writeln("") maths[0](1,2); document.writeln("")?
    • @user2210274 - 如果您想要document.write 中的maths 内容,它将是document.writeln("&lt;th&gt;"+maths[0](1,3)+"&lt;/th&gt;");,其中+ 叹息将字符串连接在一起。这将导致将&lt;th&gt;4&lt;/th&gt; 写入页面。
    • 你知道如何使用 getelementbyid 将数组中的元素打印到 DOM 到 html 元素中吗?
    • @user2210274 - 您将使用 document.createElement.appendChild 方法。这是一个简单的例子:stackoverflow.com/a/15580994/1026459
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2015-05-03
    • 2019-07-23
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多