Javascript,帮助理解括号在代码中的工作原理

时间:2017-09-29 11:25:55

标签: javascript

我的问题是关于Javascript代码中的括号(),例如在下面的代码片段中,是括号的“分组运算符”吗?或者是其他东西?如果有两组或更多组括号(),则在同一行中首先评估哪一组()?谷歌搜索,但找不到这个。虽然我理解这个小程序的大部分内容,但我很难理解第5 + 6行,因为我不理解上述括号问题,非常感谢你的帮助!

<script>
function playAudio(audioNumber) {
  var audio = document.getElementById('sound' + audioNumber);
  audio.play();
  var nonPlaying = [1, 2, 3, 4, 5, 6, 7];
  nonPlaying.splice(notPlaying.indexOf(audioNumber), 1); // line 5
  nonPlaying.forEach(function (id) {  // line 6
    document.getElementById('sound' + id).pause();
    document.getElementById('sound' + id).currentTime = 0;
  });
};

</script> 

1 个答案:

答案 0 :(得分:0)

在第5行,括号遵循标准操作顺序,就像在数学中一样。对于

nonPlaying.splice(notPlaying.indexOf(audioNumber), 1);

indexOf的调用位于splice的参数列表(括号)内,因此首先进行评估。这是有道理的,因为必须先评估indexOf,然后才能将其返回splice

要回答“在同一行中首先评估哪一组()”,这取决于它们的使用方式。在

document.getElementById('sound' + id).pause();

该行从左到右进行评估,尽管这与括号几乎没有关系。在

a().b()
必须首先评估

a,因为ba的方法。 .的{​​{3}}定义了订单。

唯一的另一个用途是作为匿名函数的参数列表:

function (id) {...}

这是一个特例。我不认为你会在参数列表中嵌套括号;即使是解构,因为JS不使用()来定义任何结构。