【问题标题】:Accessing An Array from within a function using JavaScript [closed]使用 JavaScript 从函数内访问数组 [关闭]
【发布时间】:2015-05-27 04:07:23
【问题描述】:

我搜索了论坛,但没有看到与我要问的问题类似的问题或答案,但是如果重复,请提供链接,我会在该帖子中查看答案。

是否可以从闭包/函数中访问数组中的对象?我正在尝试这样做以进行实验。

这是我在 firebug 中编写的代码。我收到“未定义”。

var checkers = [1, "string", null];

var i, txt = "";

function myFunction(checkers){
    for(var i = 0; i < checkers.length; i++ ){
        txt += checkers[i] + " ";
        console.log(txt)
    }
}

myFunction(checkers);

【问题讨论】:

  • 你在哪里打电话myFunction()?该函数中的checkers 不是闭包变量,因为它在参数列表中。
  • 您要求函数接受名为 checkers 的参数,因此,在该函数中,checkers 是您提供给函数的任何参数。由于您没有显示您对函数的调用以及您提供给它的参数,因此这个问题是 100% 无法回答的。这就是为什么当您加入时网站会提示您学习如何展示minimal, complete, verifiable testcases。我一直感到困惑,为什么我必须告知几乎每个问题作者这个明显和基本的事实。
  • 你在哪里调用函数?你通过什么论据?你不能通过闭包访问数组checkers,只能访问txt
  • 你已经声明了两次checkers,一次作为全局变量,一次作为myFunction的参数。您还没有展示如何调用该函数。
  • 您的示例输出11 string1 string null

标签: javascript arrays function for-loop


【解决方案1】:

绝对有可能,这是 JavaScript 的优势之一。

你的问题是你没有调用你的函数。此外,您不需要 myFunction 的参数,因为它会关闭上下文并了解检查器。

只需删除参数并在代码后添加myFunction() 即可调用它。

var checkers = [1, "string", null];

var i, txt = "";

function myFunction(){
    for(var i = 0; i < checkers.length; i++ ){
        txt += checkers[i] + " ";
        console.log(txt)
    }
}

myFunction();

你得到 undefined 的原因是因为在声明一个函数时没有返回值到控制台,就像你运行时得到 undefined 一样:

var t = 'asd'

【讨论】:

    【解决方案2】:
    var checkers = [1, "string", null];
    
    var i, txt = "";
    
    function myFunction(checkers){
        for(var i = 0; i < checkers.length; i++ ){
            txt += checkers[i] + " ";
            console.log(txt)
        }
    }
    
    myFunction(checkers);
    

    【讨论】:

      【解决方案3】:

      我刚刚运行它,我得到了:

      1
      1 string
      1 string null 
      undefined
      

      由于该函数不返回任何内容,Firebug 在末尾显示undefined

      【讨论】:

        猜你喜欢
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        相关资源
        最近更新 更多