我尝试使用函数读取数组并在另一个函数中使用它,但是第二个函数似乎没有读取它。我做错了什么?
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)
}
答案 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);