javascript - 类型错误:无法从未定义中读取属性 "0"

标签 javascript arrays google-apps-script typeerror undefined

我遇到了一个非常奇怪的未定义错误:

function login(name,pass) {
  var blob = Utilities.newBlob(pass);
  var passwordencode = Utilities.base64Encode(blob.getBytes());
  var ss = SpreadsheetApp.openById("");
  var sheet = ss.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var i=1;
  while (name != data[i][0]){
    Logger.log(data[i][0]);
    i++;
  }
  if (passwordencode == data[i][1]){
    UserProperties.setProperties({
      "name" :name,
      "pass" : passwordencode
      });
    Logger.log("You are logged in");
  }
  else if (passwordencode != data[i][1]) {
    Logger.log("You are not logged in");
    UserProperties.setProperties({
      "name" : "",
      "pass" : ""
      });
  }
}

使用 Google Apps 脚本。未定义的是 while 语句 where while(name != data[i][0]) 声称您无法从未定义中读取属性“0”。这有什么奇怪的,如果我在 while 语句中删除 data[i][0],它仍然在 logger.log 中工作。以及其他任何地方。这到底是怎么回事?

编辑:如果我将 while 更改为 if 语句,它也可以工作。

最佳答案

while 递增 i。所以你得到:

data[1][0]
data[2][0]
data[3][0]
...

看起来 name 与数据的任何元素都不匹配。所以,while 仍然递增,你到达了数组的末尾。我建议使用 for 循环。

关于javascript - 类型错误:无法从未定义中读取属性 "0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947556/

相关文章:

Javascript - Jquery - 单击(函数()

javascript - SignalR:调用集线器方法时发生内部服务器错误

javascript - 在 C# 中将 (Javascript)TypedArray 字符串转换为 byteArray 的最佳方法

java - 使用 foreach 循环输入二维数组

javascript - 基于 Drop Downs 循环遍历嵌套 JSON 对象

javascript - 下拉/组合框中已选择的项目应反射(reflect)为单击标签时所选择的

arrays - 给我 O(logd) 的算法是什么

javascript - Google Apps 脚本 HTML 表单不会提交

google-apps-script - 无法在新的 Google 电子表格中发布特定单元格

javascript - 这个未知错误从何而来以及如何预防?