【问题标题】:How to recognize the JavaScript method(function)如何识别 JavaScript 方法(函数)
【发布时间】:2009-07-14 00:42:56
【问题描述】:

我正在为 VS2008 编写一个插件,我想识别 JavaScript 方法(函数)。我有一个文件 - sample.js:`

        function test0()
        {
            var i = 0;
            {
                var j = 0;
            }
            var array = { 1: 2, dd: 10, aaa: 3 };
                    return array;
        }

        function test1()
        {
            var ii = "x";
            {
                var xx = "x" + ii;
            }
            return ii;
        }

`

如何识别这些方法?使用正则表达式?

【问题讨论】:

    标签: c# javascript visual-studio .net-2.0


    【解决方案1】:

    请记住,可以通过几种方式编写 JavaScript 函数。您展示了“C”风格的函数定义,但还有其他的。

    你会看到很多“var test2=function(){}”。

    您还会将它们视为对象“test3: function(){}”的成员。

    而且你可以使用“new”,但这不是很流行。

    别忘了很多 JavaScript 函数都是匿名的。

    为了更好的衡量,您应该处理立即调用模式:

    (function () {
    
      // ...
    
    }());
    

    您将看到的代码会受到一些自我强加的规则的限制吗?如果没有,当您看到“函数”时,您需要进行一些解析。特别是因为“函数”可能只是某些文本中的一个词,并且您有几种不同的引号和几种注释样式要解开,以查看它是简单的文本字符串的一部分还是注释的一部分。

    【讨论】:

    • 感谢您的帮助。但是如何识别内部括号:“{”,“}”示例:function test1() { var ii = "x"; {// 这对我来说是个问题 var xx = "x" + ii; }// 这对我来说是个问题 return ii; }
    • 您能否编辑您的原始问题,并详细说明您的具体问题? cmets中的代码很难阅读。
    • 解决我的问题的正则表达式:"function\\s*?\([\\w,\\s]*?\)\\s*?{([^{]| ({.*?})*|[^}])*?}”。再做一些更改,一切都会正常。感谢您的提示。
    【解决方案2】:

    由于 function 是保留关键字,因此可以安全地假设只要单词 function 不在引号中,它就应该是一个 javascript 函数。

    正则表达式应该可以工作。记得检查单词是否包含在引号中(这会使它成为一个字符串)。

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 2017-06-04
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      相关资源
      最近更新 更多