【问题标题】:Unable to understand javascript syntax [duplicate]无法理解 javascript 语法 [重复]
【发布时间】:2017-11-23 22:12:51
【问题描述】:

我正在查看react-jsonschema-form 的代码。我遇到了以下我无法理解的行。

var formData = (0, _utils.getDefaultFormState)(schema, props.formData, definitions);

第一个括号中的内容如何作为参数(schema、props.formData 等)传递给的函数?

【问题讨论】:

  • 第一个大括号 () 返回一个接受 3 个参数的函数。
  • 表达式 (n0, n1, ..., n) 的计算结果为 n,因此在您的情况下,函数 _utils.getDefaultFormState。至于为什么使用这个,我不确定
  • 菲尔您的评论本身就值得作为答案。
  • 开头为 0 有什么意义?

标签: javascript


【解决方案1】:

我想这个问题的答案是,在第一个表达式 (0,_utils.getDefaultFormState) 中,comma , 运算符计算为最后一个参数并返回它。

因此,逗号运算符从左到右对其操作数进行操作,并返回表达式中最右边的 last 操作数。

但这在使用函数及其返回值方面是不同的。

// sample from MDN.
function myFunc() {
  var x = 0;

  return (x += 1, x); // the same as return ++x;
}

正如我在评论中提到的:

第一个括号是自执行函数,它返回它的值作为_utils对象的函数,它接受3个或更多参数。

【讨论】:

    【解决方案2】:

    在这种情况下,第一个括号对是一个语句序列,其值是最后一个表达式的值。那么:

    (0,_utils.getDefaultFormState)
    

    返回函数 objet _utils.getDefaultFormState,然后使用以下参数调用该函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-20
      • 2016-04-02
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 2020-10-04
      • 2019-06-16
      相关资源
      最近更新 更多