0
 $(document).ready(function () {
    var cache = new Array();
    $("#selectOne").change(function () {
        var val = $(this).val();

        if (cache[val] == null) {
           // do something
         }
      });
   });

if 行给了我这个错误:

Error: TypeError: cache[val] is undefined

谁能告诉我为什么会出现这个错误?

4

6 回答 6

1
if (cache[val] == null) {
      // do something
}

上面给出了正确的错误,因为您尚未添加任何数组元素,因此如果条件将引发未定义的错误。

&& typeof cache[val] == 'undefined'你也应该添加

于 2013-09-06T11:23:42.950 回答
0

cache[val]没有定义。试试这个:

if(typeof cache[val] == 'undefined') {
    //do something
}
于 2013-09-06T11:23:53.783 回答
0

尝试:

if (typeof cache[val] == 'undefined') {
  // do something
}
于 2013-09-06T11:23:58.927 回答
0

您的cache值已初始化,但不包含任何值。因此cache[val]不存在,因为您的数组为空。

于 2013-09-06T11:24:24.177 回答
0

也许由于索引不存在它返回未定义?

您应该首先检查数组“缓存”的索引是否存在:

if (typeof(cache[val] != 'undefined')) {
    if (cache[val] == null) {
        // do something
    }
}
于 2013-09-06T11:25:58.027 回答
0

请确保在遍历数组时传递整数,即cache[val]确保它val是整数

于 2013-09-06T11:26:18.973 回答