Javascript中的变量未定义

时间:2015-03-04 05:31:05

标签: javascript

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和第二个)。我只定义了函数内的所有变量。

5 个答案:

答案 0 :(得分:2)

您的错误是consoleif条件之外打印,因此第一次条件转到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)

i0时,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