Javascript 数组的奇怪行为。全局声明无法保值

标签 javascript arrays

我的一个函数中有以下代码。我有一个数组“arr”,在 if{} 内部使用时可以正常工作。但现在在外部使用时它可以工作。谁能指出我所缺少的东西。

 function runQueries()
 {
    var arr = new Array;

    db.transaction (function (transaction) 
      {
        var sql = "SELECT * FROM incomecategory";

        transaction.executeSql (sql, undefined, 
        function (transaction, result)
        {
          if (result.rows.length)
          {
            for (var i = 0; i < result.rows.length; i++) 
            {
              var row = result.rows.item (i);
              var categoryname = row.categoryname;
              arr[i] = categoryname;
            }
                              //alert(arr[0]); // It works


          }  
          else
          {

          }
        }, error);

      });
       //alert (arr[0]); // It doesn't work. 

 }

最佳答案

这是异步行为。代码底部的警报可能在数据库查询之前执行。

关于Javascript 数组的奇怪行为。全局声明无法保值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168906/

相关文章:

javascript - 如何隐藏 Joomla Easysocial 群组 "files"群组成员的删除选项?

javascript - JQuery AJAX 不会在第二次后触发

java - 我想知道以下模式是如何工作的

c - c中的结构数组在读取c中的文本文件后未获取其所有值

javascript - 如何使用下划线根据 id 提取对象

java - 如何获得从扫描仪输入到阵列的所有排列?

javascript - 如何在 ScriptManager.RegisterStartupScript 中给出单引号?

javascript - 收到广播消息后,Angular.js View 未更新

javascript - 如何更改 amchart 中的气球文本

php - 如何将此数组拆分为三个并使用 php 将其放在 <td> 中?