我的问题是关于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>
答案 0 :(得分:0)
在第5行,括号遵循标准操作顺序,就像在数学中一样。对于
nonPlaying.splice(notPlaying.indexOf(audioNumber), 1);
对indexOf
的调用位于splice
的参数列表(括号)内,因此首先进行评估。这是有道理的,因为必须先评估indexOf
,然后才能将其返回splice
。
要回答“在同一行中首先评估哪一组()”,这取决于它们的使用方式。在
document.getElementById('sound' + id).pause();
该行从左到右进行评估,尽管这与括号几乎没有关系。在
a().b()
必须首先评估 a
,因为b
是a
的方法。 .
的{{3}}定义了订单。
唯一的另一个用途是作为匿名函数的参数列表:
function (id) {...}
这是一个特例。我不认为你会在参数列表中嵌套括号;即使是解构,因为JS不使用()
来定义任何结构。