2

関数を使用して配列を読み取り、それを別の関数で使用しようとしましたが、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

1つの方法は、関数の外部で宣言する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;
}

2番目の方法は

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 に答える