【问题标题】:Explain javascript inane function arguments解释 javascript inane 函数参数
【发布时间】:2014-06-01 19:41:24
【问题描述】:

我无法绕过这个。这是一个例子......请有人解释一下吗?

在 AngularJs 中,可以编写自定义过滤器。一个这样的过滤器可能看起来像这样(感谢 Adam Freeman 和他关于 Angular 的新书):

angular.module("exampleApp")
  .filter("labelCase", function() {
    return function (value, reverse) {
      if (angular.isString(value)) {
         ....
      }
    };
 });

在这个例子中,内部函数中“value”的值是由Angular自动提供的。 “reverse”参数由代码开发人员提供,必须由 HTML 插入。 “reverse”的值由 HTML 提供,如下所示:

... <tr>{{p.category | labelCase:true}}</td>

所以,这是我的问题:

  1. 我们应该如何知道 Angular 会自动将值数据插入“值”参数?这是常识吗?

  2. 为什么HTML“labelCase:true”调用不必为函数中的“value”参数提供占位符?换句话说,Angular 是如何知道“true”应用于第二个参数的?

  3. 这如何不会创建极其脆弱的代码?如果 Angular 人员决定在未来提供另一个自动提供的参数,会发生什么?如果发生这种情况,这不会破坏当前编写的内部函数:return function (value, reverse) { ... }?

这让我非常困惑。我期待着对这一切有更好的理解。

【问题讨论】:

    标签: javascript angularjs function parameters arguments


    【解决方案1】:
    1. 是的,这是常识。如果 angularjs 表达式 ({{p.category |...),则此 value 可以解释为从右侧开始的 input
    2. 如第一个问题所述,value 是过滤器的输入。由: 分隔的每个附加值都将作为参数添加到过滤器回调中。
    3. 这是您在使用库进行开发时经常遇到的问题。 API 和接口确实发生了变化。我猜他们将来不会改变那里的东西,但你永远不知道。这就是有时需要迁移的原因。

    {{p.category | customFilter:secondParam:thirdParam: .... }}

    angular.module("exampleApp")
      .filter("labelCase", function() {
        return function (input, someSecondParam, someThirdParam) {
          if (angular.isString(input)) {
             ....
          }
        };
     });
    

    【讨论】:

      【解决方案2】:
      1. 关于创建客户过滤器的 Angular 文档说:

        这个工厂函数应该返回一个新的过滤函数,它将输入值作为第一个参数。

        这意味着 Angular 会将输入值作为 value 参数提供给函数,因为它是第一个参数。

      2. 文档接着说:

        任何过滤器参数都作为附加参数传递给过滤器函数。

        因此 HTML 不必为第一个参数留出位置,Angular 会以适当的顺序提供它们。

      3. 就像大多数 Javascript 函数一样,您必须知道参数的顺序才能正确调用它们。开发人员通常保证他们不会不兼容地更改订单。可以在参数列表的末尾添加其他参数;如果未提供,该函数必须适当地默认它们(JS 自动将它们设置为 undefined)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        • 1970-01-01
        • 2017-08-21
        • 2017-04-07
        • 2012-08-25
        • 2020-07-22
        相关资源
        最近更新 更多