首页 > 解决方案 > 循环分配然后中断

问题描述

我来自 C/Python 背景,下面的 JavaScript 代码让我很困惑。为什么c程序末尾的值不是6?因为我们是在分配和破坏之后。(我在 JSFiddle 上运行过这个)

function funct() {
  var bytes = new Uint8Array(6);
  bytes[0] = 228;
  bytes[1] = 191;
  bytes[2] = 157;
  bytes[3] = 233;
  bytes[4] = 153;
  bytes[5] = 186;
  bytes[6] = 255;
  bytes[7] = 17;
  bytes[8] = 23;
  bytes[9] = 223;
  var c = 0;
  for (var i = 0; i < bytes.length; i++) {
    if (bytes[i] == 255) {
      c = i;
      break;
    }
  }
  console.log(i);
  console.log(c);
}

funct();

输出:

6
0

标签: javascript

解决方案


您的数组大小为 6,但索引 6 是第 7 个条目。您需要为数组分配更多空间:

function funct() {
    var bytes = new Uint8Array(10);
    bytes[0] = 228;
    bytes[1] = 191;
    bytes[2] = 157;
    bytes[3] = 233;
    bytes[4] = 153;
    bytes[5] = 186;
    bytes[6] = 255;
    bytes[7] = 17;
    bytes[8] = 23;
    bytes[9] = 223;
    var c = 0;
    for (var i = 0; i < bytes.length; i++) {
        if (bytes[i] == 255) {
            c = i;
            break;
        }
    }
    console.log(i);
    console.log(c);
}
    
funct();


推荐阅读