【问题标题】:Difference between two ways of calling a function in coffeescript (in Rails)在coffeescript中调用函数的两种方式之间的区别(在Rails中)
【发布时间】:2014-08-17 23:15:12
【问题描述】:

有人能解释一下以下两种语法之间的细微差别吗?

(我在咖啡脚本中使用 rails 和 turbolinks)

1) 我遇到过这种推荐的代码调用方式。

windowReady = ->
  customFunction = ->
    ...code...

  jQuery ($) -> 
    ...code...

$(window).load(windowReady);
$(window).on('page:load', windowReady);

2) 我还使用了以下语法,在行为上没有明显差异。

(->
  customFunction = ->
    ...code...

  jQuery ($) -> 
    ...code...
).call this

这两种方式应该注意哪些细微的差异,如何解决? 一个比另一个更可取吗?

【问题讨论】:

  • 你在使用 TurboLinks 吗?
  • @mu 太短了,是的。如果是否使用 turbolinks 存在进一步的差异,也将不胜感激。
  • This answer 可能有用。 TurboLinks 只触发一次加载,之后当 TurboLinks 切换页面时您会收到page:load 事件。当然,除非你有一个可以修补 $(document).ready(...) 的插件。
  • 似乎其他语法的行为方式也相同
  • windowReady 版本的唯一功能区别是它使用命名函数将功能绑定到两个单独的事件。

标签: javascript jquery coffeescript turbolinks


【解决方案1】:

这有点像苹果和橘子的比较。

显然windowReady 和匿名函数的主体是相同的,但第一个版本使用 JQuery(我猜是 TurboLinks)库,而第二个版本(在方法本身之外)只是直接的 JS/CS .

正如所写,第二个版本将只执行一次匿名函数——当 JS/CS 文件第一次加载并执行时。第一个版本会在每次触发page:load 事件时执行windowReady 函数。

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2022-07-05
    • 2022-01-08
    • 2017-10-20
    • 2021-11-07
    相关资源
    最近更新 更多