Javascript Java脚本中未定义的变量 函数getForm() { var arry=[[0,1],[1,2],[2,3],[3,4]; var a; var x=1; 控制台日志(x); 对于(i=0;i
我对JavaScript完全陌生,我在Firebug中运行这个编程。我得到了未定义的输出,我希望输出x=1,a=2(我指的是第一个console.log和第二个console.log)。我只在函数中定义了所有变量。您在每次迭代中都记录Javascript Java脚本中未定义的变量 函数getForm() { var arry=[[0,1],[1,2],[2,3],[3,4]; var a; var x=1; 控制台日志(x); 对于(i=0;i,javascript,Javascript,我对JavaScript完全陌生,我在Firebug中运行这个编程。我得到了未定义的输出,我希望输出x=1,a=2(我指的是第一个console.log和第二个console.log)。我只在函数中定义了所有变量。您在每次迭代中都记录a,但是a直到if语句为true时才被设置,这只发生在第二次迭代中 让我们一步一步地看一遍: function getForm() { var arry =[ [0,1] ,[1,2],[2,3],[3,4]]; var a;
a
,但是a
直到if
语句为true
时才被设置,这只发生在第二次迭代中
让我们一步一步地看一遍:
function getForm()
{
var arry =[ [0,1] ,[1,2],[2,3],[3,4]];
var a;
var x = 1 ;
console.log(x);
for (i = 0; i < arry.length; ++i)
{
if (arry[i][0] == x)
{
a = arry[i][1];
}
console.log(a);
}
}
它输出未定义的
a
,因为您第一次调用console.log(a)
变量a
未定义
您声明了一个不带值的a
:
// 1. iteration
i = 0
arry[i][0] == x => false // 0 == 1
console.log(a) // undefined
// 2. iteration
i = 1
arry[i][0] == x => true // 1 == 1
a = arry[i][1] // a = 2
console.log(a) // 2
// 3. iteration and beyond
// the condition is always false, so `a` keeps its value
i = 2
arry[i][0] == x => false // 2 == 1
console.log(a) // 2
然后在循环的第一次迭代中检查:
var a;
当i
为0
时,arry[i][0]
也为0
。您将x
定义为1
。0不等于1,因此此条件为false。这意味着将值设置为a
的条件块内的代码不会执行。但是,在它完成之后,代码将被删除
当时
a
未定义,因此console.log(a)
logs未定义您的错误是console
在条件之外打印,如果条件,那么第一次条件变为false
(返回未定义
),第二次条件满足(然后正确打印)
您应该将控制台
移动到if
状态
if (arry[i][0] == x)
控制台上的视图。日志(x)工作正常
在第一次迭代中,if条件为false,因此“a”不会被初始化,因此在控制台中您将得到未定义,下一次迭代之后,您将获得所需的控制台输出
如果您在firebug上运行,则会显示额外的“未定义”,因为调用不返回任何内容的函数将在控制台上导致“未定义”您声明了该函数,但从未调用过该函数。调用函数将获得所需的结果,因为当我尝试在没有函数包装的情况下执行语句时,即
1
2
var arry=[[0,1]、[1,2]、[2,3]、[3,4];
var a;
var x=1;
console.log('x',x的值);
对于(i=0;i
这就是输出:
x 1的值
0迭代中a的值2864415817892.274
迭代2中1的a值
迭代2中a的值
在3次迭代2中a的值在哪一行得到错误?您只定义了一个函数,从未调用过它。因此,firebug在声明函数后说,未定义
我在第3行中出现错误,它将for循环中的数组作为普通文本,而不是蓝色是的,工作正常!!如果我在函数外部声明数组,我将无法访问它!!但为什么x最初没有打印?我的意思是这个变量x=1@因为我们最初打印x,但OP有一些不打印的目的。
1
2
var arry =[ [0,1] ,[1,2],[2,3],[3,4]];
var a;
var x = 1 ;
console.log('Value of x', x);
for (i = 0; i < arry.length; ++i) {
if (arry[i][0] == x) {
a = arry[i][1];
}
console.log('Value of a in ', i , 'iteration' ,a);
} ;