2009-07-14 3 views
0

Я пишу плагин для VS2008, и я хотел бы узнать метод (функцию) JavaScript. У меня есть файл - sample.js: `Как распознать метод JavaScript (функция)

 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; 
     } 

`

Как распознать эти методы? Использовать регулярные выражения?

ответ

0

Поскольку функция является зарезервированным ключевым словом, можно с уверенностью предположить, что до тех пор, пока функция слова не входит в кавычки, она должна быть функцией javascript.

Регулятор должен работать. Не забудьте проверить, не сломано ли слово в кавычках (что сделало бы это слово строкой).

4

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

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

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

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

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

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

(function() { 

    // ... 

}()); 

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

+0

Спасибо за помощь. Но как определить внутренние скобки: "{", "}" Образец: function test1() { var ii = "x"; {// это для меня проблема var xx = "x" + ii; } // Это проблема для меня return ii; } –

+0

Не могли бы вы отредактировать исходный вопрос немного подробнее по своему конкретному вопросу? Трудно читать код в комментариях. – Nosredna

+0

Регулярное выражение, которое решает мою проблему: «функция \\ s *? \\ ([\\ w, \\ s] *? \\) \\ s *? {([^ {] | ({. *? }) * | [^}]) *}?». Еще несколько изменений и все должно работать. Спасибо за подсказки. –

Смежные вопросы