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);
}
}
我是JavaScript新手,我在Firebug中运行这个编程。我得到输出为undefined我期待输出x = 1,a = 2(我的意思是第一个console.log和第二个)。我只定义了函数内的所有变量。
答案 0 :(得分:2)
您的错误是console
在if
条件之外打印,因此第一次条件转到false
(返回undefined
)并且第二次条件满足(然后正确打印),
您应该将console
移至if
条件
<script>
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);
}
}
</script>
控制台结果:
1
2
查看jsFiddle
答案 1 :(得分:0)
您在每次迭代中都记录a
,但在a
语句为if
之前不会设置true
,这只会在第二次迭代中发生。
让我们一步一步地完成它:
// 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
答案 2 :(得分:0)
它会输出undefined
,因为您第一次调用console.log(a)
时变量a
未定义。
您声明a
没有值:
var a;
然后在循环的第一次迭代中检查:
if (arry[i][0] == x)
当i
为0
时,arry[i][0]
也是0
。您将x
定义为1
。 0不等于1,因此该条件为假。这意味着条件块中的代码(将值设置为a
)不会执行。但是之后的代码呢。
当时a
未定义,因此console.log(a)
会记录undefined
。
答案 3 :(得分:0)
console.log(x)工作正常
在第一次交互中,if条件为false,因此'a'将不会被初始化,因此在控制台中你将得到未定义,下一次迭代以后你将获得所需的控制台输出,
如果你在firebug上运行额外的'undefined'将被替换,因为调用一个不返回任何内容的函数将导致控制台上的'undefined'
答案 4 :(得分:0)
您声明了该函数但从未调用过。调用该函数将为您提供所需的结果,因为当我尝试执行没有函数换行的语句时,即
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);
} ;
这是输出:
x 1的值
0迭代中的值2864415817892.274
1次迭代2的值
2次迭代2的值
3次迭代中的值2