Em Perl posso dizer:
@a = ();
unshift @a; # @a is still ()
unshift @a, (); # @a is still ()
unshift @a, 1>0 ? 1 : 0; # @a is now (1)
unshift @a, 1>0 ? () : 0; # @a is still (1)
Qual é a sintaxe equivalente do JavaScript, se existir?
a=[];
a.unshift(); # a is still []
a.unshift(...[]); # a is still []
a.unshift( 1>0 ? 1 : 0); # a is now [1]
a.unshift( 1>0 ? ...[] : 0 ); # syntax error
a.unshift( 1>0 ? (...[]) : 0 ); # syntax error
a.unshift( 1>0 ? [] : 0 ); # a is now [[],1]
Você não pode usar a sintaxe de spread onde você a tem, como um operando do operador condicional (ternário). Em vez disso, inverta a ordem da sintaxe de spread e do operador condicional e certifique-se de que o operador condicional sempre avalie um iterável -- então provide
[0]
em vez de0
:Como os colaboradores da Mozilla escreveram :
O operando do operador condicional não é um lugar onde exatamente um operando é esperado entre os símbolos
?
e .: