【问题标题】:Array element outside function is undefined with Android 5.1Android 5.1 未定义函数外的数组元素
【发布时间】:2016-10-12 13:03:45
【问题描述】:

我有一个带有一些 JavaScript 代码的 cordova 应用程序:

function test(){
   a = new Array();
   a['var_a']=5;
   a['var_b']=10;

   return a;
}

$(document).ready(function(){
    return_arr = test();

    console.log(return_arr['var_a']);
});

我的预期结果是5。在 Intel XDK Emulator 和我的带有 OS 10 的 Blackberry 中,我还得到了5。但是,使用搭载 Android 5.1 的 Cubot 手机时,我会收到 undefined

什么会导致这种不同的行为? 我的解决方案是使 return_arr 全局化,但我仍然对为什么我的代码应该错误感兴趣?!

【问题讨论】:

    标签: javascript android arrays cordova associative-array


    【解决方案1】:

    数组被索引,而您正在寻找属性。你会更好地使用一个对象,而不是一个数组......

    function test(){
       a = {};  // declare an empty object
       a['var_a']=5;
       a['var_b']=10;
    
       return a;
    }
    
    $(document).ready(function(){
        return_arr = test();
    
        console.log(return_arr['var_a']);
    });
    

    【讨论】:

    • 是的,我知道一个对象可能是更好的对象。然而,关联数组在某些环境中有效,但在 Cubot 手机上无效。为什么?
    • 我的问题更多是关于为什么它在任何环境中都有效,而不是为什么在某些环境中无效。它根本不应该工作。我的答案是作为您使数组全局化的建议的替代方法发布的。除了只是“让它工作”的障碍之外,它也不应该改变任何东西!该代码在 IE 和 Chrome 中都返回一个空数组,因此我将完全停止沿该路线走下去。
    • 啊,你检查了几个浏览器,是浏览器的问题?那谢谢啦!我会试试的。
    • 没问题 - 乐于助人。祝你好运:)
    猜你喜欢
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 2022-06-28
    • 2014-08-11
    • 2017-05-25
    • 1970-01-01
    相关资源
    最近更新 更多