Javascript函数数组

Javascript function array

本文关键字:数组 函数 Javascript      更新时间:2023-09-26

我想知道如何用函数创建一个数组,然后随机化一个并调用它。下面是我测试的一个例子。

functions = [f1(), f2(), f3(), f4()];
rand = functions[Math.floor(Math.random() * functions.length)];
$('p').click(function() {
  rand[0]();
}

我搜索并尝试了多种假定的解决方案,但都不起作用(包括这一个:Javascript函数数组)。

使用函数引用创建数组,然后在点击处理程序中使用随机密钥生成

function log(func) {
  $('#x').html(func)
}
function f1() {
  log('f1')
}
function f2() {
  log('f2')
}
function f3() {
  log('f3')
}
function f4() {
  log('f4')
}
functions = [f1, f2, f3, f4];
$('p').click(function() {
  var rand = functions[Math.floor(Math.random() * functions.length)];
  rand();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="x"></div>
<p>Click</p>

  1. 通过在函数名称(f1())后添加(),您有效地执行了函数。必须将函数的引用传递给数组,以便以后可以调用它。所以,

    functions = [f1(), f2(), f3(), f4()];
    

    成为

    functions = [f1, f2, f3, f4];
    
  2. 您似乎只计算了一次rand,因为它没有放在click事件中。包括这个,

    rand = functions[Math.floor(Math.random() * functions.length)];
    

    在事件处理程序中。

  3. rand不是数组。它包含一个函数的引用,可以通过调用它来调用,如下所示:

    rand();
    

您的完整代码以及一些添加内容在这里被篡改了:http://jsfiddle.net/sq623mrc/