2017-09-29 1 views
1

私の質問は、JavaScriptコードの括弧()についてです。例えば、以下のコードのスニペットで括弧の 'grouping operators'ですか?または、他の何か? 2つ以上の括弧()のセットがある場合、of()のセットは最初に同じ行で評価されますか?グーグルでは、これについて多くを見つけることができません。私はこの小さなプログラムの大半を理解していますが、私はこの括弧の問題を理解していないので、5 + 6行を理解するのに苦労しています。Javascriptは、かっこがコード内でどのように機能するかを理解するのに役立ちます。

<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> 
+4

コードスニペットの括弧は、関数の開始と終了を示します。あなたがこれも知らないなら、Stack Overflowはまだあなたのための最良の場所ではありません。あなたは良いJSチュートリアルを探してください。 –

+0

私は5行目がどのように評価されているか知りたいと思っています。たとえば、5行目で最初に評価されたのは(audioNumber)ですか?おそらく他の誰かがより建設的な入力を持っているでしょう:) – Emma45

+0

評価は内側です。つまり、 'indexOf'が最初に評価され、その結果が' splice'を評価するために使われます。 –

答えて

0

5行目では、括弧が演算の標準的な順序に従います。

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

についてindexOfへの呼び出しは、(括弧)spliceの引数リストの中にあるので、それは最初に評価されます。 indexOfは、その戻り値がspliceに渡される前に評価されなければならないので、これは理にかなっています。


"どのセットが(同じ)行の最初に評価されるか"という答えは、使用方法によって異なります。 In

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

行は左から右に評価されますが、それは括弧とはほとんど関係ありません。 baの方法であるので

a().b() 

aで最初に評価されなければなりません。 operator associativity.は、注文を定義します。

function (id) {...} 

特殊な例であるビット:


唯一の他の使用は、無名関数へのパラメータリストとしてです。私は、パラメータリストに入れ子のカッコを入れる状況はないと思います。構造体を定義するためにJSが()を使用していないので、構造化さえしても。

+0

ありがとうCarcigenicate、それは非常に役立つように見える - 私はこの質問を投稿する前に、私はこれらの概念を既に遭遇していた - これについての私の研究では、演算子の連想性、inner()最初の評価など、あなたの返信を調査します – Emma45

関連する問題