1.

Код AS3:
switch (a.b.c.d)
{
case 20:
case 30:
case 0:
...
break;
}
2. Самый вменяемый способ, т.к. документирует код и уменьшает копипасту.
Тёмная сторона - потеря производительности, возможна потеря нити рассуждений при чтении кода, т.к. приходится скроллить на функцию (но обычно, если тяжело читать условия и код не критичен - выношу их в функции):

Код AS3:
function isNeeded(a:int):Boolean
{
return a == 20 || a == 30 || a == 0;
}
if (isNeeded(a.b.c.d))
{
...
}
3. Относительно наглядно, но крайне невыгодно по производительности. Т.е. такой метод можно использовать только в тестах (где все средства хороши), а в коде по сравнению с выносом переменной - выгода от наглядности слабовата, а потери производительности высоки:

Код AS3:
if([20, 30, 0].indexOf(a.b.c.d) != -1)
4. А вообще единственный косяк метода с переменной - это то что она будет мешаться во всей функции (из-за дурацкого подхода в AS3 к областям видимости переменных). А так не знаю, чем он вам не нравится.