2014-10-26 7 views
-5

Я уже зарекомендовал себя на Java-разработчике, и мне нравится, как Java использует типы, подписи, методы и т. Д. Это делает все понятным, простым в использовании и логичным.Как разработчик Java может понять код Javascript

Теперь я пытаюсь разработать что-то в Javascript. Я пытаюсь изучить Angular JS. Однако мне очень сложно понять, как этот код разработан.

Посмотрите на код at this tutorial о ng-repeat. Я отправлю выборку кода;

app.directive('lkRepeat', function(){ 
    return { 
    transclude : 'element', 
    compile : function(element, attr, linker){ 
     return function($scope, $element, $attr){ 
     var myLoop = $attr.lkRepeat, 
      match = myLoop.match(/^\s*(.+)\s+in\s+(.*?)\s*(\s+track\s+by\s+(.+)\s*)?$/), 
      indexString = match[1], 
      collectionString = match[2], 
      parent = $element.parent(), 
      elements = []; 

     // $watchCollection is called everytime the collection is modified 
     $scope.$watchCollection(collectionString, function(collection){ 
      var i, block, childScope; 

      // check if elements have already been rendered 
      if(elements.length > 0){ 
      // if so remove them from DOM, and destroy their scope 
      for (i = 0; i < elements.length; i++) { 
       elements[i].el.remove(); 
       elements[i].scope.$destroy(); 
      }; 
      elements = []; 
      } 

Мой вопрос: Как вы можете читать такой код? Когда вызываются функции, где находятся подписи метода? Кроме того, при возврате значения function с такими параметрами, как $scope, $element, $attr, являются ли они только владельцами мест для переменных, которые будут переданы? Если да, то почему у них такие забавные имена, почему бы не сбросить знак доллара?

+3

Вы не должны погружаться в углы, прежде чем понимать, как работает javascript - документация углов и рабочий процесс предполагают хорошую ручку на языке. – Sacho

+0

'Мой вопрос: как вы можете читать такой код?' Не подходит для сети stackoverflow, возможно, для проверки кода –

+2

@KostiaMololkin - Обзор кода для вопросов природы «Я написал этот код. Может быть, это лучше?». Это определенно не для этого типа вопроса. – Quentin

ответ

0

Когда вызываются функции, где находятся подписи метода?

В шкафу JavaScript используется сигнатура метода, заключающаяся в том, что при объявлении функции вы можете назвать аргументы.

function foo (named_argument, another_named_argument) { 

Аргументы всегда являются обязательными. Если вы не укажете значение, оно получит undefined.

Вы можете указать столько аргументов, сколько хотите, и функция может получить к ним доступ через arguments object.

Кроме того, при возврате значения функции с такими параметрами, как $ scope, $ element, $ attr, являются ли они просто владельцами мест для переменных, которые будут переданы?

Да

Если да, то почему у них есть такие смешные имена, то почему бы не уронить знак доллара?

Знак доллара - это символ, разрешенный в JavaScript-идентификаторе. Некоторые люди используют его, чтобы указать, что ожидается, что переменная будет содержать объект jQuery (поскольку jQuery отбрасывает все свои функции с переменной, называемой $).

+0

Хорошо, но как автор знает, что 'compile:' должен возвращать функцию, которая принимает эти три параметра? Кто его будет называть? – CodyBugstein

+2

@Imray - прочитав документацию (или исходный код). – Quentin

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