【问题标题】:Is it a bad practice to use function call in ng-if/*ngIf? [duplicate]在 ng-if/*ngIf 中使用函数调用是一种不好的做法吗? [复制]
【发布时间】:2016-10-20 00:26:37
【问题描述】:

在 ng-if 中使用函数调用的返回值是不是一种不好的做法。它会影响摘要周期/性能吗?

【问题讨论】:

  • 如果每次迭代都没有返回相同的值。不常见,但如果有人试图返回随机的东西,例如会导致无限的摘要问题,因此会中止
  • Uhmmm...很难知道...这个问题有 angularjs 和 angular2 标签,但问题是关于 angular1 还是 angular2?没有人会知道...

标签: angularjs


【解决方案1】:

与视图中使用的任何表达式一样,它将在每个摘要循环中重新评估以查看其值是否已更改,从而确定是否必须将元素删除或添加到 DOM。

如果函数足够简单,没问题。如果它试图计算 pi 的第 10000 位小数,您将遇到性能问题。重要的是了解您在做什么,以及它是如何工作的。

因此,如果您觉得使用某个函数可以让您的代码更简单,那就去做吧,并在您真正需要时开始优化。

【讨论】:

    【解决方案2】:

    不,那很好。该函数不应有副作用(尤其是不更改参与更改检测的其他字段)

    【讨论】:

      【解决方案3】:

      函数调用将比仅仅在作用域上对变量进行纯粹的评估稍慢,这主要是因为“运行函数”的步骤必须在“检查真实性”运行之前处理。但这种性能影响取决于您的函数运行所需的时间。

      一般来说,任何构成复杂逻辑的东西都可以提取到一个函数中,它会清理你的 HTML,因为你的模板文件中不需要很长的 JS。

      如果语句不能在单个 JS 语句中完成,或者语句开始长度超过大约 40 个字符,我经常提取到函数。

      【讨论】:

      • 现在将 console.log 添加到您的“不那么复杂的逻辑”中,看看它被调用了多少次。
      猜你喜欢
      • 2012-07-27
      • 2021-12-31
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2019-10-30
      • 2011-03-28
      相关资源
      最近更新 更多