问答详情
源自:3-8 编程练习

关于二维数组arr[i][0]的问题

http://img.mukewang.com/57a95111000136c405940410.jpg

alert(arr[1][1]);会弹出提示框

http://img.mukewang.com/57a9514f0001fc0604460171.jpg

但是if中的判断条件在运行时为什么会读取不到

提问者:湛瞳 2016-08-09 11:44

个回答

  • 爱吃芒果
    2016-08-09 22:33:10
    已采纳

    刚没看理解你的问题,现在再来补充一下~

    你的问题是:1)if中的判断条件在运行时为什么会读取不到2)为什么(arr[1][1])可以识别,(arr[i][0])会报错

    第一个问题,运行时其实已经读取到if判断条件了,所以才会出现Cannot read property '0' of underfined报错

    第二个问题,当你给数组赋值之后,直接alert(arr[1][1]); 默认将字符串转换为数组形式,所以[1][1]索引的是第二个数组'##'的第二个值'#'。你把for循环位置调整之后,在那一行打一个断点,在Sources中F10分步运行就可以看到报错是在i的值为6的时候出现的,原因在于var arr = ['*','##',"***","&&","****","##*"];只定义了数组的前六个值,arr[7] = '**';则定义了第八个值;所以arr[6]即数组的第七位是没有赋值的,该位置为空,也就不存在arr[6][0]的值,因此控制台报错。

  • 爱吃芒果
    2016-08-09 22:01:48

    你定义数组的方式也有问题吧,好像并没有定义二维数组。

    var arr = ['*','##',"***","&&","****","##*"];

    这样定义的只是一维数组,为什么后面却又直接使用二维数组的方式进行索引呢?

  • 湛瞳
    2016-08-09 13:07:10

    亲们,我知道for循环的格式有问题,不过这不是我的重点啊,即使改正确了还是会有如图所示的错误,我想知道为什么(arr[1][1])可以识别,(arr[i][0])0会报错

  • sh_ero
    2016-08-09 12:01:44

    for 循环没有把alert包含进去

  • 韦小小德
    2016-08-09 11:53:46

    代码中的for循环格式好像错了