奇怪的javascript导致我的代码未定义变量

时间:2013-09-06 11:20:49

标签: javascript jquery

 $(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

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

6 个答案:

答案 0 :(得分:1)

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

上面给出了正确的错误,因为你还没有添加任何数组元素,所以如果condition会抛出未定义的错误。

您还应该添加&& typeof cache[val] == 'undefined'

答案 1 :(得分:0)

cache[val]未定义。 试试这个:

if(typeof cache[val] == 'undefined') {
    //do something
}

答案 2 :(得分:0)

尝试:

if (typeof cache[val] == 'undefined') {
  // do something
}

答案 3 :(得分:0)

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

答案 4 :(得分:0)

也许因为索引不存在它返回undefined?

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

if (typeof(cache[val] != 'undefined')) {
    if (cache[val] == null) {
        // do something
    }
}

答案 5 :(得分:0)

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