How to recognize the JavaScript method(function)

Asked
Viewd359

0

I am writing a Plug-In for VS2008 and I would like to recognize the JavaScript method(function). I have a file - 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;
        }

`

How to recognize these methods? Use regular expressions?

2 ответов

0

Since function is a reserved keyword, it's safe to assume that as long as the word function is not in quotes it should be a javascript function.

Regex should work. Remember to check if the word is incased in quotes (which would make it a word a string).

4

Помните, что функции JavaScript можно написать несколькими способами. Вы показали определение функции в стиле "C", но есть и другие.

Вы увидите много "var test2 = function () {}".

Вы также увидите их как члены объектов "test3: function () {}".

И вы можете использовать слово «новый», но это не очень популярно.

И не забывайте, что многие функции JavaScript анонимны.

Для большей надежности вы должны обработать шаблон немедленного вызова:

 (function () {

  // ...

}());
 

Будет ли код, который вы увидите, ограничен некоторыми добровольными правилами? Если нет, вам нужно выполнить синтаксический анализ, когда вы увидите слово «функция». Тем более, что «функция» может быть просто словом в каком-то тексте, и у вас есть пара разных типов кавычек и пара стилей комментариев, которые нужно распутать, чтобы увидеть, является ли это просто частью текстовой строки или частью комментария.

  • Регулярное выражение, решающее мою проблему: “function \ s ? \ ([\ w, \ s] ? \) \ s *? {([^ {] ({.?}) [^}]) *?} ». Еще несколько изменений и все должно работать. Спасибо за подсказки. Michał Ziober14 июля 2009, 01:27
  • Could you edit your original question with a little more detail on your specific question? It’s hard to read code in comments.

    Nosredna14 июля 2009, 01:05
  • Thanks for help. But how to identify internal brackets: “{“, “}” Sample: function test1() { var ii = “x”; {// this is a problem for me var xx = “x” + ii; }// this is a problem for me return ii; }

    Michał Ziober14 июля 2009, 01:04