Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 运行存储在数组中的函数_Javascript_Arrays - Fatal编程技术网

Javascript 运行存储在数组中的函数

Javascript 运行存储在数组中的函数,javascript,arrays,Javascript,Arrays,我正在将一些函数推送到数组中,但我不确定在循环数组时如何运行这些函数 我正在尝试将红色黄色绿色输出到控制台 下面是我的JavaScript的一个小提琴: 以下是我目前掌握的代码: var myArr = []; myArr.push( logItRunner('red') ); myArr.push( logItRunner('yellow') ); myArr.push( logItRunner('green') ); console.log(myArr); //Function to

我正在将一些函数推送到数组中,但我不确定在循环数组时如何运行这些函数

我正在尝试将
红色
黄色
绿色
输出到控制台

下面是我的JavaScript的一个小提琴:

以下是我目前掌握的代码:

var myArr = [];

myArr.push( logItRunner('red')  );
myArr.push( logItRunner('yellow') );
myArr.push( logItRunner('green')  );
console.log(myArr);

//Function to be stored in array.  Should return the logIt function.
function logItRunner( arg ) {
    return function() {
        logIt( arg );
    };
}

//Function to log a string to the console
function logIt (color) {
    console.log(color);  
};

//Function to loop through array and fire functions within the array
function runIt () {
    for (var i = 0, len = myArr.length; i < len; i++) {
        //Fire Function within Array at position i and log the argument to the console.
        myArr[i];
    };
};

runIt();
var myArr=[];
myArr.push(logItRunner(“红色”));
myArr.push(logItRunner('yellow'));
myArr.push(logItRunner(“绿色”));
console.log(myArr);
//要存储在数组中的函数。应该返回logIt函数。
函数logItRunner(arg){
返回函数(){
罗吉特(arg);
};
}
//函数将字符串记录到控制台
函数逻辑(颜色){
控制台。日志(颜色);
};
//函数在阵列中循环,并在阵列中激发函数
函数runIt(){
对于(变量i=0,len=myArr.length;i
myArr[i]
是一个函数引用。使用
()
,调用它引用的函数,就像调用函数引用时一样:

在循环中,更改:

myArr[i];


myArr[i]
是一个函数引用。使用
()
,调用它引用的函数,就像调用函数引用时一样:

在循环中,更改:

myArr[i];


看看我是如何执行myArri的下面

你差一点就搞定了,只是忘了()

//循环数组的函数,并在数组中激发函数
函数runIt(){
对于(变量i=0,len=myArr.length;i
查看我如何执行myArri下面

你差一点就搞定了,只是忘了()

//循环数组的函数,并在数组中激发函数
函数runIt(){
对于(变量i=0,len=myArr.length;i
这是关于JavaScript闭包是如何工作的,这通常是我们教授JavaScript闭包的方式,因此您的示例很好,因为它澄清了这个概念

这是我通常教授JavaScript闭包的方法,与您的方法完全相似,但有一些小的区别:

var myArr = [];
myArr.push('red');
myArr.push('yellow');
myArr.push('green');

var funcArr=[];
function pushIt () {
    for (var i = 0, len = myArr.length; i < len; i++) {
        var func = (function(color){
            return (function(){
                console.log(color);
            });
        })(myArr[i]);
        funcArr.push(func);
    };
};
function runIt () {
    for (var i = 0, len = funcArr.length; i < len; i++) {
        funcArr[i]();
    };
};
pushIt();
runIt();
var myArr=[];
myArr.push(“红色”);
myArr.push(“黄色”);
myArr.push(“绿色”);
var funcArr=[];
函数pushIt(){
对于(变量i=0,len=myArr.length;i
这是关于JavaScript闭包是如何工作的,这通常是我们教授JavaScript闭包的方式,因此您的示例很好,因为它澄清了这个概念

这是我通常教授JavaScript闭包的方法,与您的方法完全相似,但有一些小的区别:

var myArr = [];
myArr.push('red');
myArr.push('yellow');
myArr.push('green');

var funcArr=[];
function pushIt () {
    for (var i = 0, len = myArr.length; i < len; i++) {
        var func = (function(color){
            return (function(){
                console.log(color);
            });
        })(myArr[i]);
        funcArr.push(func);
    };
};
function runIt () {
    for (var i = 0, len = funcArr.length; i < len; i++) {
        funcArr[i]();
    };
};
pushIt();
runIt();
var myArr=[];
myArr.push(“红色”);
myArr.push(“黄色”);
myArr.push(“绿色”);
var funcArr=[];
函数pushIt(){
对于(变量i=0,len=myArr.length;i
谢谢!这可能看起来很愚蠢,但我不太熟悉使用数组,这就是为什么我尝试将函数推入数组的原因。阵列中的函数作为
[函数,函数,函数]
记录到控制台是否正常?我试图将其记录为函数名。再次感谢T.J@我很乐意帮忙。您的函数没有名称,您正在使用以下匿名函数表达式创建它们:
function(){logIt(arg);}
。根据您使用的浏览器,如果它们确实有名称,则在转储到控制台时,您可能会看到它们,也可能看不到它们。非常感谢您的解释:)谢谢!这可能看起来很愚蠢,但我不太熟悉使用数组,这就是为什么我尝试将函数推入数组的原因。阵列中的函数作为
[函数,函数,函数]
记录到控制台是否正常?我试图将其记录为函数名。再次感谢T.J@我很乐意帮忙。您的函数没有名称,您正在使用以下匿名函数表达式创建它们:
function(){logIt(arg);}
。根据您使用的浏览器,如果它们确实有名称,则在转储到控制台时,您可能会看到它们,也可能看不到它们。非常感谢您的解释:)谢谢您的快速回复!谢谢你的快速回复!