如何在JavaScript中运行随机选择的函数?

我正在尝试运行一个随机函数,但还没有完全弄明白:

 function randomFrom(array) {return array[Math.floor(Math.random() * array.length)];} function randomchords(){randomFrom(['poop()', 'poop2()', 'poop3()']);} function poop() { $(function() {ionian_c_vi() }); } function poop2() { $(function() {ionian_c_iii() }), $(function() {ionian_c_iv() }); } function poop3() { $(function() {ionian_c_vi() }), $(function() {ionian_c_i() }), $(function() {ionian_c_ii() }); }  

然后:

  

我是在正确的轨道上吗?

一种选择是使用window对象:

 function randomchords() { var func = randomFrom(['poop', 'poop2', 'poop3']); window[func](); } 

请注意,您应该从数组中的函数名称中删除括号。


另一种选择是从上面的变体中删除引号并直接调用函数:

 function randomchords() { var func = randomFrom([poop, poop2, poop3]); (func)(); } 

function就像价值观。 你可以说:

 var myArray = [ function(){ ionian_c_vi(); }, function(){ ionian_c_iii(); ionian_c_iv() }, function(){ ionian_c_vi(); ionian_c_i(); } ]; function randomchords(){ randomFrom(myArray).call(); } 

有关详细信息,请查看http://www.yuiblog.com/blog/2010/02/24/video-crockonjs-3/和/或阅读https://developer.mozilla.org/en/JavaScript/Reference / Global_Objects /function/呼叫

Bookwise,阅读Javascript:The Good Parts(120页)

帮助在jQuery之外学习JS 🙂

你很亲密:

 function foo() { ... } function bar() { ... } function baz() { ... } 

这些函数定义为全局范围,通常是浏览器中的window 。 例如,您可以通过调用window['foo']来通过字符串访问它们。 这将返回foo函数本身(而不是执行中的值)。

 function randomFrom(array) { return array[Math.floor(Math.random() * array.length)]; } function randomchords() { // add the 'window' prefix here randomFrom(window['foo', 'bar', 'baz'])(); } 

你可以这么做:

但最简单的我认为生成一个随机数,并用case调用函数:)

 $("button").click(function) { var n = Math.floor(Math.random()*11); switch(n) { case: 0: Function0(); break; case: 1: Function1(); break; case: 2: Function2(); break; ... case: 10: Function10(); break; } 

有了btn,你可以打电话