【问题标题】:Calling javascript functions without parenthesis调用不带括号的javascript函数
【发布时间】:2017-02-20 20:44:27
【问题描述】:

当我阅读一些 jquery 代码时,我在他们的一个小部件中发现了这个

    option: {
        _page: this._getPage,
        _panelInner: this._getPanelInner()
    },
    _getPage : function(){ //code goes here that returns something..},
    _getPanelInner : function(){ //code goes here that returns something..}

我想知道第一个 this._getPage 函数是如何在没有括号的情况下被调用的。如果可以这样调用函数,那么为什么下一个函数_getPanelInner 会用括号调用..?

【问题讨论】:

  • 它没有被调用,而是传递了对函数的引用。 var a = function() {}; var b = a;
  • 非常感谢..它完全解决了我的问题..

标签: javascript jquery function


【解决方案1】:

_panelInner 将保存_getPanelInner 函数返回的值,而_page 将保存_getPage 函数的引用。这意味着可以通过以下方式之一调用该函数:

  • option._page()
  • this._getPage()

这两个函数调用都会执行相同的函数,但不会自动调用该函数(根据显示的代码)。

【讨论】:

  • “_getPanelInner 函数的返回值”——这听起来不对。
  • 我的意思是函数的“返回值”,@zerkms。我不知道该怎么表达...
  • 我同意要简明扼要地表达它并不容易 :-)
  • @zerkms '_getPanelInner' 正在返回一个对象,所以我认为 '_panelInner' 持有该对象
【解决方案2】:

它没有被调用,它只是对函数的引用,所以稍后你可以这样做:

option._page();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2015-08-25
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多