【问题标题】:why does a show "function getFullYear() { [native code for Date.getFullYear, arity=0] }" rather than the value returned by the method?为什么 a show "function getFullYear() { [native code for Date.getFullYear, arity=0] }" 而不是方法返回的值?
【发布时间】:2013-06-24 03:17:30
【问题描述】:

在 Google Apps 脚本编辑器中,我有以下代码

  function t(){
    var d = new Date;
    Logger.log(d);
    var y = d.getFullYear;
    Logger.log(y);
    if (y == 2013) {
      Logger.log("yes");
    } else {
      Logger.log("No");
    }
  }

我在查看日志时看到以下结果。

[13-06-23 19:53:52:863 PDT] Sun Jun 23 19:53:52 GMT-07:00 2013
[13-06-23 19:53:52:864 PDT] function getFullYear() { [native code for Date.getFullYear, arity=0] }

[13-06-23 19:53:52:864 PDT] No

我以为我会看到一个整数或字符串,它是 getFullYear 返回的值。

对我来说造成这个问题的原因并不是这种方法所独有的。

我相信这是非常基本的。

提前致谢。

【问题讨论】:

    标签: javascript google-apps-script


    【解决方案1】:

    这会在y 中存储对getFullYear 函数的引用:

    var y = d.getFullYear;
    

    这会调用getFullYear函数并将函数调用的结果存储在y中:

    var y = d.getFullYear();
    // ------------------^^
    

    也许您感到困惑,因为您可以创建带或不带括号的对象(假设您当然不需要传递任何参数):

    var d1 = new Date;
    var d2 = new Date();
    

    它们都做同样的事情,但这只是new 运算符的一个怪癖/功能。

    【讨论】:

    • 谢谢。你听到的下一个声音将是我拍拍我的额头并说“继续,笨蛋。)
    • @WesR:我的前额已经凹下去了,所以我不再对自己这样做了:)
    【解决方案2】:

    var y = d.getFullYear;更改 var y = d.getFullYear();你的问题必须用这种方式解决。你忘了那个“()”

    【讨论】:

    • 已经answered... 并接受。无需添加相同的答案。
    猜你喜欢
    • 2013-08-04
    • 2020-06-24
    • 1970-01-01
    • 2020-08-06
    • 2020-12-17
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多