操作的优先级 - Javascript数组

时间:2015-11-25 01:08:20

标签: javascript node.js

我不确定此Javascript代码中的操作顺序:

  suite.parallel([
        suite.it('makes stuff 1', function (done) {

            done();

        }),
        suite.it('makes stuff 2', function (done) {

            done();

        })
    ]);

首先评估每个数组元素(先运行it()函数吗?)或先运行suite.parallel函数?

不幸的是,这是更大代码库的一部分,我很难对其进行测试。

我的半受教育的猜测是元素首先评估,我不能看到它是另一种方式。

2 个答案:

答案 0 :(得分:2)

Grammar中所述,它首先从左到右评估内部函数,或者在您的示例中,首先评估内部函数。

答案 1 :(得分:2)

在JavaScript中,在调用函数之前,始终会完全评估参数。否则它非常严格地从左到右。

所以一步一步发生的是

  1. suite.parallel被评估为方法参考
  2. 评估数组文字[…]
    1. 评估其第一个元素,即一个调用。所以
      1. suite.it被评估为方法参考
      2. 评估参数 - 字符串文字和函数表达式
      3. 使用这些值
      4. 调用该方法
    2. 第二个数组元素
    3. 也是如此
    4. 返回值放在数组中是各自的索引
  3. 使用数组值调用该方法。
  4. 然而,这并没有说明何时调用那些回调函数(带有done参数)。所有这些suite方法都可以启动一些异步计算,当它们这样做时,只需查看一下它们的文档即可告诉您何时会发生什么。