【问题标题】:How a Java developer can understand Javascript codeJava 开发人员如何理解 Javascript 代码
【发布时间】:2014-10-26 10:08:33
【问题描述】:

到目前为止,我是一名经验丰富的 Java 开发人员,我喜欢 Java 使用类型、签名、方法等的方式。它使所有内容都易于理解、易于理解和符合逻辑。

现在我正在尝试用 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 = [];
          }

我的问题是:你如何阅读这样的代码?调用函数时,方法签名在哪里?此外,当返回带有$scope$element$attr 等参数的function 值时,这些只是将要传递的变量的占位符吗?如果是这样,那为什么他们有这么有趣的名字,为什么不去掉美元符号呢?

【问题讨论】:

  • 在了解 javascript 本身的工作原理之前,您不应该真正深入了解 Angular - Angular 的文档及其工作流程假定对语言有很好的处理。
  • My question is: How can you read such code? 不适合stackoverflow网络,可能是为了代码审查
  • @KostiaMololkin — 代码审查是针对“我已经编写了这段代码。它会更好吗?”性质的问题。绝对不适合这类问题。

标签: javascript angularjs function parameters


【解决方案1】:

调用函数时,方法签名在哪里?

最重要的 JavaScript 拥有方法签名是,在声明函数时,您可以命名参数。

function foo (named_argument, another_named_argument) {

参数始终是可选的。如果不指定值,则会得到undefined

您可以指定任意数量的参数,并且该函数可以通过arguments object 访问它们。

另外,当返回带有 $scope、$element、$attr 等参数的函数值时,这些只是将要传递的变量的占位符吗?

是的

如果是这样,那为什么他们有这么有趣的名字,为什么不去掉美元符号呢?

美元符号只是 JavaScript 标识符中允许的字符。有些人用它来表示该变量应该保存一个 jQuery 对象(因为 jQuery 将其所有功能都关闭了一个名为 $ 的变量)。

【讨论】:

  • 好的,但是作者怎么知道compile:应该返回一个接受这三个参数的函数呢?谁会打电话给它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 2020-03-18
  • 1970-01-01
  • 2017-01-17
相关资源
最近更新 更多