2

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

  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)
        }
4

5 回答 5

2

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

于 2012-05-18T07:15:24.483 回答
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);
}
于 2012-05-18T07:13:47.860 回答
1

你不能因为你在A本地声明calcDet

一种方法是A在函数外部声明,或者简单地将其输入calcRec

var A
function calcDet() {
   // code
}

function calcRec() {
   // code
}

或更好)

function calcRec() {            
   var s;
   var det;
   alert (calcDet())
}
于 2012-05-18T07:14:35.290 回答
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;
}
于 2012-05-18T07:14:57.247 回答
1

请参阅有关范围的此链接

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

function calcRec(data) {            
        var s;
        var det;
        alert (data)
}
A = calcDet();
calcRec(A);
于 2012-05-18T07:14:59.867 回答