Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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 为什么此函数返回“0”;“未定义”;而不是数组?_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

Javascript 为什么此函数返回“0”;“未定义”;而不是数组?

Javascript 为什么此函数返回“0”;“未定义”;而不是数组?,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,这项工作: var stepFunc = [ //Step 0 (it doe not exist) function(){console.log("Step 0");}, //Step 1 (function(){ var fFirstTime = true; return function(){ console.log("Step 1"); if (fFirstTime){

这项工作:

var stepFunc = 
[
    //Step 0 (it doe not exist)
    function(){console.log("Step 0");},
    //Step 1
    (function(){
        var fFirstTime = true;
        return function(){
            console.log("Step 1");
            if (fFirstTime){
                //Do Something
            }
        }   
    })(),
    // ... Other steps
];
这不起作用:

var stepFunc =
[ // Step 0 
    [
        function(){console.log("Step 0");},
        function(){console.log("Check Step 0");} 
    ], //Step 1         
    (function(){
        var fFirstTime = true;          
        return
        [
            function() { //Initialization function
                console.log("Step 1");
                if (fFirstTime){
                    //Do somrthing
                }
            }, function() { 
                return true;
            }
        ];      
    })(), 
    // ...
];

我希望stepFunc是一个函数数组数组。在第一个层次上,我想创建一个拥有自己数据的闭包。为什么stepFunc[1]是“未定义的”?

您可能在隐式语句终止(又称隐式分号插入)上遇到了麻烦。
return
后面的行被完全忽略,不返回任何内容。这项工作:

var stepFunc = [
            // Step 0 
            [
                function(){console.log("Step 0");},
                function(){console.log("Check Step 0");} 
            ], //Step 1      
           (function(){
               var fFirstTime = true;          
               return [  // <-- important to begin the return value here
                  function() {
                    console.log("Step 1");
                    if (fFirstTime){
                        //Do somrthing
                    }
                  }, function()   { 
                    return true;
                  }
               ];         
           })()
];
var stepFunc=[
//步骤0
[
函数(){console.log(“步骤0”);},
函数(){console.log(“检查步骤0”);}
],//步骤1
(功能(){
var fFirstTime=真;

返回[//我尽了最大努力清理这个问题,修复缩进并对齐括号;即使在示例代码段中,也应该尝试平衡括号,否则人们会认为这就是导致问题的原因。@Šime Vidas-我认为您在编辑时无意中删除了问题的原因。请确保保持完整性(或缺少)问题中的代码。:o)返回到@meagar的编辑。@patrick Haha,我只是通过尝试更好地格式化代码来消除问题,以便能够阅读代码,从而尝试解决问题。啊,JavaScript。:)我测试了它。我复制并粘贴了它,并使用开发工具。stepFunc[1]是“未定义”的。问题是什么?@Chris Check out将您的代码放入其中,它会报告您可能想要修复的错误,以便使代码更加健壮。@deceze我是时候看到这种情况发生在某人身上了:p不仅仅是理论上的。我确实希望返回后不会执行任何操作。实际上,这是最后一次statement@Chris-但是你没有o希望返回包含函数的数组,对吗?否则,自调用函数的目的是什么?我希望以后能够在代码stepFunc[1][0]();@Chris,
return
后的换行符导致了错误。当
return
语句后出现换行符时,javascript解释器会认为这是语句的结尾,并插入一个
。请注意,@deceze删除了外部数组的一部分,因此需要将其重新添加。