返回首页
当前位置: 主页 > 网络编程 > Jsp实例教程 >

Javascript索引超出了数组界限(数组越界)原因、示例及解决

时间:2017-11-06 22:58来源:知行网www.zhixing123.cn 编辑:麦田守望者

无论是什么语言,偶尔都会遇到索引超出了数组界限这样的错误提示,也就是数组越界(所用数组索引超出了数组实际索引)。例如,一个数组只有5个元素,数组索引(下标)又是从0开始的,如果定义的数组为 a,这样取取值 a[5],则会报数组越界错误,因为最后一个元素的索引是4,取最后一个元素应该这样 a[4]。

  当然,在实际开发过程中很少会犯这么低级的错误,通常都是程序运行产生的动态数组,因某些情况一时没有考虑到而致数组越界。接着就举例一些常见的索引超出了数组界限示例,为满足不同的需要,将举 javascript、C# 等语言的实例。

 

  一、javascript 索引超出了数组界限示例

  1、示例一:数组索引误从1开始,代码如下:

  var arr = [1, 2, 3, 4, 5, 6];

 

  错误:

  for(var i = 1; i <= arr.length; i++){
    var tmp = arr[i];//当 i = arr.length,数组越界
  }

 

  正确:

  for(var i = 0; i < arr.length; i++){
    var tmp = arr[i];
  }

 

  2、未判断数组长度,随意取值导致数组越界

  假如要获取网页的所有 div 标签,事先没判断有多少个 div,就直接用下标取值,代码如下:

  var arr = document.getElementsByTagName("div");
  var temp = arr[1];

 

  如果网页中没有 div 或者只有一个 div,则 arr[1] 会发生数组越界错误,正确代码应该加一句判断:

  if(arr.length > 1){
    var temp = arr[1];
  }

 

 

  二、C# 索引超出了数组界限示例

  假如要取一个文件夹中的所有文本文件,如果用数组长度取最后一个元素,则会产生数组越界错误,代码如下:

  /// <summary>
  /// C#获取一个文件夹中所有文本文件
  /// </summary>
  /// <param name="path">文件夹路径</param>

  private void GetTxtFiles(string path)
  {
    DirectoryInfo di = new DirectoryInfo(path);
    FileInfo[] arrFi = di.GetFiles("*.txt");

    //错误
    string temp = arrFi[arrFi.Length].Name;//用数组长度取最后一个元素,则产生数组越界

    //正确
    string temp = arrFi[arrFi.Length - 1].Name;
  }

  调用:

  GetTxtFiles("G:\xq\test");

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):Javascript
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
猜你感兴趣