谷歌应用脚​​本(自定义电子表格功能)示例中的'input.map'是什么?

jak*_*kub 3 javascript arrays google-sheets google-apps-script

我对谷歌的Apps脚本指南中的这个例子感到困惑.此函数迭代给定范围并对每个单元格执行计算.

function DOUBLE(input) {

  if (input.map) {            // Test whether input is an array.
    return input.map(DOUBLE); // Recurse over array if so.
  } else {
    return input * 2;
  }

}
Run Code Online (Sandbox Code Playgroud)

我不明白的事情:

  1. input这个函数有什么对象?typeof告诉我这是一个数字,但它不应该是一个数组?它毕竟是一系列值(例如A2:B).
  2. 变量.map之后是什么东西input?我在参考页面找不到它.它也没有突出显示,因为变量或函数是.
  3. 条件陈述的目的对我来说不清楚.是否return input.map(DOUBLE)意味着" else在整个数组的相应语句中做什么"?为什么它的结构如此?

任何见解(或指向正确来源的指针)都非常感激.

uno*_*obf 6

此代码是使用内省有条件地执行代码的示例.if (input.map)如果输入是一个数组(并且有一个map函数),则返回truthy,并且在所有其他情况下将返回falsy.

因此,此代码进行测试以查看输入是否为数组,如果不是,则将其视为数字,否则将其视为数组.

您可以在MDN上看到地图功能的定义https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

关于JavaScript的最佳书籍是"JavaScript the Good Parts" http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&qid=1419857713&sr=8-1&keywords =的JavaScript +的+良好+份