Java 脚本中未定义的变量

Variable undefined in Java script

本文关键字:变量 未定义 脚本 Java      更新时间:2023-09-26
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中运行这个程序。我得到的输出是未定义的,我期待输出 x=1,a=2(我的意思是第一个控制台.log第二个控制台(。我只定义了函数内的所有变量。

您的错误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上查看

您在每次迭代中都记录a,但在if语句true之前不会设置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

它输出undefined,因为第一次调用console.log(a)变量a是未定义的。

声明a不带值:

var a;

然后在循环的第一次迭代中,您检查以下内容:

if (arry[i][0] == x)

i 0时,arry[i][0]也是0。 您将x定义为1. 0 不等于 1,因此此条件为 false。 这意味着条件块中的代码(将值设置为 a (不会执行。 但是之后的代码确实如此。

此时a未定义,因此console.log(a)日志undefined

console.log(x( 工作正常

在第一次交互中,if 条件为 false,所以 'a' 不会被初始化,因此在控制台中你会得到未定义,下一次迭代以后你会得到所需的控制台输出,

如果你在Firebug上运行,额外的"undefined"将被取消,因为调用一个不返回任何内容的函数将导致控制台上的"undefined">

您声明了该函数,但从未调用过。调用函数会给你想要的结果,因为当我尝试在没有函数包装的情况下执行语句时,即

    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 中 a 的值

2 迭代 2 中 a 的值 2

3 迭代 2 中 a 的值