Operatorprioriteit en operatorassociatie bepalen de volgorde waarin operatoren worden uitgevoerd. Hoewel het vanzelfsprekend is voor personen die bekend zijn met wiskunde of eenvoudig programmeren dat de compiler de operator voor vermenigvuldigen (
*
) uitvoert vóór de operator voor optellen (
+
), heeft de compiler expliciete instructies nodig over welke operatoren eerst moeten worden uitgevoerd. Dergelijke instructies worden gezamenlijk
operatorprioriteit
genoemd. ActionScript definieert een standaardoperatorprioriteit die u kunt wijzigen door de ronde-haakjesoperator (
()
) te gebruiken. Met de volgende code wordt bijvoorbeeld de standaardprioriteit in het vorige voorbeeld gewijzigd, zodat de compiler wordt gedwongen de operator voor optellen te verwerken vóór de operator voor vermenigvuldigen:
var sumNumber:uint = (2 + 3) * 4; // uint == 20
Er kunnen situaties voorkomen waarin twee of meer operatoren met dezelfde prioriteit worden weergegeven in dezelfde expressie. In deze gevallen gebruikt de compiler de regels van
associatie
om te bepalen welke operator het eerst moet worden uitgevoerd. Alle binaire operatoren, behalve de toewijzingsoperatoren, hebben
associatie naar links
, wat betekent dat operatoren aan de linkerkant eerder worden uitgevoerd dan operatoren aan de rechterkant. De toewijzingsoperatoren en de voorwaardelijke operator
?:
hebben
associatie naar rechts
, wat betekent dat operatoren aan de rechterkant eerder worden uitgevoerd dan operatoren aan de linkerkant.
Neem bijvoorbeeld de operatoren kleiner dan (
<
) en groter dan (
>
), die dezelfde prioriteit hebben. Als beide operatoren in dezelfde expressie worden gebruikt, wordt de operator aan de linkerkant eerst uitgevoerd, omdat beide operatoren associatie naar links hebben. Dit betekent dat de volgende twee instructies dezelfde uitvoer produceren:
trace(3 > 2 < 1); // false
trace((3 > 2) < 1); // false
De operator groter dan wordt eerst uitgevoerd, wat resulteert in de waarde
true
, omdat de operand 3 groter is dan de operand 2. De waarde
true
wordt vervolgens doorgegeven aan de operator kleiner dan, samen met de operand 1. De volgende code vertegenwoordigt deze tussenstatus:
trace((true) < 1);
De operator kleiner dan zet de waarde
true
om in de numerieke waarde 1 en vergelijkt die numerieke waarde met de tweede operand 1 om de waarde
false
te retourneren (de waarde 1 is niet kleiner dan 1).
trace(1 < 1); // false
U kunt de standaardassociatie naar links wijzigen met de ronde-haakjesoperator. U kunt de compiler opgeven de operator kleiner dan eerst te verwerken door die operator en de operanden ervan tussen ronde haakjes te plaatsen. In het volgende voorbeeld wordt de ronde-haakjesoperator gebruikt om een andere uitvoer te produceren met dezelfde getallen als in het vorige voorbeeld:
trace(3 > (2 < 1)); // true
De operator kleiner dan wordt eerst uitgevoerd, wat resulteert in de waarde
false
, omdat de operand 2 niet kleiner is dan de operand 1. De waarde
false
wordt vervolgens doorgegeven aan de operator groter dan, samen met de operand 3. De volgende code vertegenwoordigt deze tussenstatus:
trace(3 > (false));
De operator groter dan zet de waarde
false
om in de numerieke waarde 0 en vergelijkt die numerieke waarde met de andere operand 3 om de waarde
true
te retourneren (de waarde 3 is groter dan 0).
trace(3 > 0); // true
De volgende tabel bevat een lijst met operatoren voor ActionScript 3.0 in volgorde van afnemende prioriteit. Elke rij van de tabel bevat operatoren met dezelfde prioriteit. Elke rij operatoren heeft een hogere prioriteit dan de volgende rij in de tabel.
Groep
|
Operatoren
|
Primair
|
[] {x:y} () f(x) new x.y x[y] <></> @ :: ..
|
Postfix
|
x++ x--
|
Unair
|
++x --x + - ~ ! delete typeof void
|
Multiplicatief
|
* / %
|
Additief
|
+ -
|
Bitsgewijs verplaatsen
|
<< >> >>>
|
Relationeel
|
< > <= >= as in instanceof is
|
Gelijkheid
|
== != === !==
|
Bitsgewijze AND
|
&
|
Bitsgewijze XOR
|
^
|
Bitsgewijze OR
|
|
|
Logische AND
|
&&
|
Logische OR
|
||
|
Voorwaardelijk
|
?:
|
Toewijzing
|
= *= /= %= += -= <<= >>= >>>= &= ^= |=
|
Komma
|
,
|