数组值在两个函数之间传输

时间:2012-05-18 07:11:44

标签: javascript

我尝试使用函数读取数组并在另一个函数中使用它,但是第二个函数似乎没有读取它。我做错了什么?

  function calcDet () {   
            var A = [];     //generates the array
                for (var i = 0; i < k; i++) {
                    A[i] = [];
                    for (var j = 0; j < k; j++) {   
                        var id = "A" + (i + 1) + (j + 1);                   
                        A[i][j] =  parseFloat(document.getElementById(id).value);               
                    }
                }   
                alert (A);
            return (A); 
        }
        function calcRec() {            
                var s;
                var det;
                alert (A)
        }

5 个答案:

答案 0 :(得分:2)

首先,您的数组未在函数外声明。它的范围仅限于功能体。但是当你的函数返回数组时,请尝试使用它来初始化其他数组中的局部变量。这也行得通。 要么 尝试在函数之外声明它

答案 1 :(得分:1)

这是因为JavaScript具有“功能范围”。这意味着外部无法看到函数内部声明的内容,但从内部可以看到外部的内容。

在您的情况下,您必须在函数外声明数组。

var A = []

function calcDet(){...}

function calcRec(){
    alert(A);
}

或调用该函数并返回A

function calcDet(){
    var A = [];
    ...
    return A;
}

function calcRec(){
    var A = calcDet(); //get A from calcDet
    alert(A);
}

答案 2 :(得分:1)

您不能,因为您在A

中在本地声明calcDet

一种方法是在功能之外声明A,或者只是将其输入calcRec

var A
function calcDet() {
   // code
}

function calcRec() {
   // code
}

或(更好)

function calcRec() {            
   var s;
   var det;
   alert (calcDet())
}

答案 3 :(得分:1)

第一种方式是

function function1()
{
  var valriable1=12;
  function2(val);
}

function function2(val)
{
  var variableoffunction1 = val;
}

第二种方式是

var globalvarialbe;
function function1()
{
  globalvarialbe=12;
  function2();
}

function function2()
{
  var local = globalvarialbe;
}

答案 4 :(得分:1)

<强> See this link about scope

在函数内部声明的A变量仅限于该函数。它会在函数死后死亡。您需要将其作为参数传递:

function calcRec(data) {            
        var s;
        var det;
        alert (data)
}
A = calcDet();
calcRec(A);