【问题标题】:Mismatched parentheses: a quick way to find them?不匹配的括号:找到它们的快速方法?
【发布时间】:2011-09-29 13:04:49
【问题描述】:

我刚刚重新排列了一个非常大的 JavaScript 文件。我现在得到“输入意外结束”。在这数百个函数中的某个地方,有一个失去了(或获得)一个括号。找到它的最快方法是什么?

【问题讨论】:

  • "Unexpected end of input" 几乎可以肯定是缺少括号,而不是多余的。
  • 你有没有一个编辑器可以折叠大括号,或者在左边距显示它们的范围,或者有一个“转到范围的另一端”命令,或者有一个单独的“大纲”窗口?
  • 谢谢。我会寻找一个折叠大括号的编辑器。我正在寻找荧光笔,并没有想到崩溃。谢谢。
  • 虽然我同意使用折叠编辑器,但我通过使用 WebStorm IDE 找到了我的,它保留了您曾经保存的文件的每个版本,并且可以轻松地将它们与当前版本并排保存.这就是我发现问题的方式

标签: javascript brackets mismatch unexpectendoffile


【解决方案1】:

使用缩进良好的东西重新格式化文件。寻找离左边太远的东西。

【讨论】:

  • 通常我会,但我使用 Marc Kerbiquet 的“代码浏览器”。它对组织代码非常有帮助。但一个缺点是添加更多缩进会使它的用处大大降低。但我肯定会在较小的文件中这样做。
  • 它仍然只是一个文件;把它放在一个可以缩进的编辑器中。 (我的意思是,是的,jslint 也很好,只是说说而已。)
【解决方案2】:

在 Eclipse 中缺少大括号时的一个好技巧是转到源模块中的最后一个大括号并双击它。这将一直突出显示它认为是匹配的开括号。它突出显示的地方总是问题所在的开始,所以跳过那个打开的大括号并转到下一个并开始双击打开的大括号,你通常会很快找到大括号丢失的地方。我了解到,使用包含 20,000 多行代码的源代码文件并遇到数百个错误,但没有丝毫迹象表明真正的问题出在哪里,因为错误开始在代码的早期出现数千行。

【讨论】:

    【解决方案3】:

    您可以尝试使用 lint 解析文件: http://www.javascriptlint.com/online_lint.php

    如果您对文件大小有疑问,请尝试将其拆分为更小的文件...

    【讨论】:

    • @RLEMON 他们有一些细微的差别(jslint 实际上更严格)但是发现缺少的括号他们都很好。
    • 谢谢!这正是我想要的!
    【解决方案4】:

    试试Esprima 解析器。它带有一个语法验证器,可以为您提供每个错误的行号。

    npm install --global esprima
    esvalidate path/to/file.js
    

    输出

    path/to/file.js:915: Unexpected token )
    

    【讨论】:

      【解决方案5】:

      尽量减少函数的嵌套。它降低了代码的质量(可维护性)。

      【讨论】:

      • 我是个新手 - 我不知道你可以在 JavaScript 中嵌套函数(在我的最后一种语言中这是不可能的。)你给了我邪恶的想法,谢谢!
      • 适当嵌套的函数提高代码质量,不会降低代码质量。
      • 关键词是“适当地”,它经常是懒惰、快速和肮脏的编程。
      猜你喜欢
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 2017-03-25
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多