Java 脚本中未定义的变量
Variable undefined in Java script
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第二个控制台(。我只定义了函数内的所有变量。
您的错误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上查看
您在每次迭代中都记录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 的值
- Javascript变量未定义,onchange不起作用
- 定义的变量未定义
- 无法弄清楚为什么本机 Promise 变量未定义
- Windows 8 Javascript 疯狂 - 变量未定义
- $rootScope变量未定义
- 变量未定义
- Javascript:TypeError变量未定义
- 变量未定义/超出范围
- javascript变量未定义
- Javascript变量未定义错误
- $scope变量未定义,尽管它是在$watch函数内部设置的
- 类型错误:变量未定义
- AngularJs $http变量未定义
- JQuery:创建扩展返回变量未定义
- d3.js变量未定义,但在Firefox控制台中,它可以工作
- Javascript 中用于上传表单数据的变量未定义
- 节点.js模块级变量未定义
- Node.js req.session 变量未定义
- 错误:AngularJs 变量未定义,当使用 grunt 运行时.(泽泽尔)
- 将字符串拆分为两个变量 - 未定义不是一个函数