运行JavaScript代码时持续出现undefined,请求排查问题
问题排查与解决方案
嘿,我一眼就发现问题所在啦!你遇到的undefined输出问题,根源是把数字变量当成数组来访问了。
问题分析
你定义的var a = 10;是一个数字类型的变量,而a[i]这种写法是用来访问数组元素的。在JavaScript里,当你尝试给数字加下标访问时,JS会临时把数字转为包装对象,但这个对象里并没有对应下标的属性,所以每次都会返回undefined。
另外你提到“将变量留空后仍然无法正常运行”——如果a留空(比如只写var a;),那a的值是undefined,循环条件i < a会变成i < undefined,这个判断结果是false,循环根本不会执行,自然也不会有任何输出。
修正方案
根据你的需求,分两种情况给出修正代码:
情况1:想输出0到9的数字
如果你的目的是循环输出0到9,直接使用循环变量i即可:
var a = 10; for(var i = 0; i < a; i++){ document.write(i); }
情况2:想遍历一个数组
如果你的初衷是遍历数组元素,那需要先把a定义成数组,同时用数组的length属性作为循环终止条件:
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // 定义目标数组 for(var i = 0; i < a.length; i++){ document.write(a[i]); // 正确访问数组的每个元素 }
内容的提问来源于stack exchange,提问作者hyperman
相关产品推荐
相关产品推荐

