Javascript var 提升问题

2024-04-25

我有一个非常简单的 Javascript 函数,它可以访问 MS SQL 服务器并返回一些记录。有一个单元格,我只想在它唯一时才显示在顶部表格行中。 我相信我的问题是 var 提升,因为我在 while 循环中分配的变量不起作用,因为该值不是从要比较的最后记录中携带的。这是代码

function searchIndex()
{

    var termcounter = "";

    flyoutHTML = '<table>';

    var adOpenDynamic = 2
    var adLockOptimistic = 3

    var conn = new ActiveXObject("ADODB.Connection");
    var connectionstring = "Provider=SQLOLEDB;Server=XXXXXXXX;INTEGRATED SECURITY=SSPI;DATABASE=YYYYYYYYYY;"

    conn.Open(connectionstring)
    var rs = new ActiveXObject("ADODB.Recordset")

    rs.Open("SELECT field1, field2, field4, field4, field5 FROM dbo.table;", conn)

    if (rs.eof)
    {
    flyoutHTML += '<tr><td align="center">No Records Found!</td></tr>';
    }
    else
    {


    while(!rs.eof)
    {

    if (termcounter != rs(0))
    {
        var termcounter = rs(0);
        flyoutHTML += '<tr>';
        flyoutHTML += '<td colspan="3">' + rs(0) + '</td>';
        flyoutHTML += '</tr>';
    }


    flyoutHTML += '<tr>';
    flyoutHTML += '<td>' + rs(1) + '</td><td>' + rs(2) + '</td><td>' + rs(3) + '</td>';
    flyoutHTML += '</tr>';

    rs.movenext

    }
    rs.close
    conn.close


    flyoutHTML += '</table>';

}

把“var”去掉var termcounter = rs(0);

关于提升,您可能是对的——JavaScript 没有块作用域,因此您两次声明 termcounter 时它都在同一作用域中。这是一个非常常见的错误,因为 JavaScript 看起来像具有块作用域的基于 C 的语言。

在条件块或循环块中声明 var 相当于在该块所在函数的开头声明它(按作用域而言)。

如果你总是将 var 声明放在函数的顶部,而不是放在条件块或循环块中,那么你会少掉一些头发。参见克罗克福德 http://www.jslint.com/lint.html#scope。您可以使用JSLint http://www.jslint.com/警告你。 (哦,顺便说一下,您缺少了大量的分号——JSLint 会伤害您的感情。)

那你为什么要重新声明呢?删除第二个“var”并执行分配。


微软的东西对我来说很陌生,但我发现 rs(0) 语法令人困惑。 rs 是一个对象吗?或者是否有某种魔法可以让它变成一个函数(JS 永远不知道)?我做了一些谷歌搜索 http://www.kuro5hin.org/story/2005/7/14/13942/7643我想知道您是否需要使用 rs.fields(0) 或 rs.fields(0).name 或 rs.fields(0).value 或其他东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript var 提升问题 的相关文章

随机推荐

  • 在 Azure DevOps 中跨存储库共享模板

    我有一个专门创建的模板存储库来包含所有模板文件 例如 1 analysis stage template parameters name yesNo name of the parameter required type boolean d
  • 在 Google Cloud Functions 中安装私有 GitHub npm 包不起作用

    我正在尝试将微服务部署到 GCF 它依赖于私有 GitHub 托管的包 为了访问该包 我向该函数添加了一个 npmrc 文件 如下所述here https cloud google com functions docs writing sp
  • 查找下周六的日期

    如何用 Python 查找下周六的日期 最好使用datetime格式为 2013 05 25 gt gt gt from datetime import datetime timedelta gt gt gt d datetime strp
  • “IndexError:位置索引器越界”,当它们明显不是时

    这是我正在使用的一些代码的 MWE 我通过切片和一些条件慢慢地缩减初始数据帧 直到只有我需要的行 每个五行块实际上代表一个不同的对象 因此 当我缩小范围时 如果每个五行块中的任何一行满足条件 我想保留它 这就是 keep index 循环所
  • 反序列化 XML 属性“xsi:type”

    这是我第一次在 stackoverflow 上提问 也是第一次使用 xml 文件 所以我认为情况不会比这更糟糕了 我需要反序列化一些长 XML 但困扰我的部分如下
  • 如何取消jenkins中的构建队列作业,这些作业不是由jenkins启动的,而是通过REST API位于其构建队列中

    如何通过 REST API 取消 jenkins 中的构建队列作业 这些作业不是由 jenkins 启动且位于其构建队列中 我知道如何使用以下命令取消正在进行的作业 curl X POST
  • ARC - __unsafe_unretained 的含义?

    只是想确保我做对了 我需要吗 unsafe unretain不属于我的物品 如果一个物体是 unsafe unretained我需要使用吗assign in the property 这是否意味着该对象没有被保留 而只是引用我分配给的对象
  • 为什么在 jQuery 中调用函数需要包装在方法中?

    假设我有一个函数 function myFunction 我想从事件处理程序中调用它 为什么这个结构不调用我的函数 window resize myFunction 但这确实有效 window resize function myFunct
  • 带有 OAuth 访问令牌的 GitHub 克隆

    在脚本中 我尝试使用 OAuth 令牌克隆 GitHub 存储库 根据本教程 https github com blog 1270 easier builds and deployments using git over https and
  • Node.js |如何通过串口向设备发送和接收一个字节?

    我正在尝试编写使用以下方法的 Node js 脚本serialport https serialport io 用于读取和写入数据的 npm 包COM5串行端口 使用 RS 232 电缆连接到设备 该设备会自动传输其拥有的数据 要检索设备内
  • PHP:如何使浏览器点击下载文件

    PHP 初学者 文件上传成功 但我的浏览器不下载文件 而是读取文件 所以我参考了其他线程并发现下面的代码不起作用 我想在单击超链接时下载文件download 从MySQL数据库中选择路径 rows mysqli num rows resul
  • gcc 4.4.5 中未定义 _GLIBCXX_ATOMIC_BUILTINS

    我有一些正在移植的代码 并且我已经找到了丢失的错误 宏 GLIBCXX ATOMIC BUILTINS 后来的gcc版本没有定义这个吗 解决这个问题的正确方法是什么 在该版本中 您还需要检查某些特定数据类型的原子宏 因此您可以执行以下操作
  • .NET 应用程序无法启动和接收 XamlParseException

    我编写了一个可以在我的开发 PC Windows 7 上安装和运行的应用程序 开发环境 Window 7 VS2010 WPF C 两者都有 NET 4 and NET 3 5已安装 在其他客户端计算机 XP SP3 2和1 上 安装没有错
  • 我在 Joda-Time 中得到两个日期之间的时间错误

    无论我做什么 我都会得到不正确的结果 谁能给我一些建议吗 这是我的程序的代码 负责获取两个日期之间的时间 我得到了结果 但问题是它不正确 并且我无法找到问题 我的项目中有 Joda 库 if timerightnow isSelected
  • iOS - 管理 IBOutlet 内存的最佳方法是什么?

    我一直在查看 Apple 文档和示例代码 试图确定管理 IBOutlet 内存的最佳方法 至少可以说 我有点困惑 CurrentAddress 示例代码将 IBOutlets 声明为属性 interface MapViewControlle
  • 如何为 iOS 构建 PoDoFo 库

    这可能是这个问题的副本如何在 iOS 上使用 PoDoFo 库对 PDF 进行注释 https stackoverflow com questions 7643771 how can i use the podofo library for
  • 调试时的监视窗口:CS0103:当前上下文中不存在名称“

    我正在使用 Visual Studio Community 2022 64 bit Version 17 4 2 with NET Framework Version 4 8 09032 昨天 2022 年 2 月 12 日有更新 我是通过
  • pictureBox 图片处理异常

    我最近想尝试一下锻造网 http www aforgenet com framework 因为我发现它非常简单 所以我决定使用 Video FFMPEG 命名空间进行一些简单的视频播放 这样我就可以将每个帧直接放在 pictureBox 上
  • Android中线程加载的Web图像

    我在 ListActivity 中有一个扩展的 BaseAdapter private static class RequestAdapter extends BaseAdapter 以及其中定义的一些处理程序和可运行对象 Need han
  • Javascript var 提升问题

    我有一个非常简单的 Javascript 函数 它可以访问 MS SQL 服务器并返回一些记录 有一个单元格 我只想在它唯一时才显示在顶部表格行中 我相信我的问题是 var 提升 因为我在 while 循环中分配的变量不起作用 因为该值不是