Na wtfjs, stwierdziłem, że następujące jest prawnym javascript.JavaScript "krotek" notacja: jaki jest jej sens?
",,," == Array((null,'cool',false,NaN,4)); // true
Argument (null,'cool',false,NaN,4)
wygląda krotki do mnie, ale JavaScript nie ma krotki!
Niektóre szybkie testy w mojej konsoli javascript dają następujące wyniki.
var t = (null,'cool',false,NaN,4); // t = 4
(null,'cool',false,NaN,4) === 4; // true
(alert('hello'), 42); // shows the alert and returns 42
Wydaje się zachowywać dokładnie tak jak średnik ;
oddzielone listy stwierdzeń, po prostu zwrotu wartości ostatniego sprawozdania.
Czy istnieje odniesienie, które opisuje tę składnię i jej semantykę? Dlaczego on istnieje, tj. Kiedy powinien być używany?
Jest to operator przecinka: http://javascriptweblog.wordpress.com/2011/04/04/the-javascript-comma-operator/ – Lepidosteus
Operator przecinka może być również (ab) używany do uruchamiania szeregu funkcji wewnątrz gałęzi potrójnej, ponieważ i tak zwróci wynik ostatniej instrukcji: 'var a = isTrue? (b = f (c), g (b)): (b = g (c), f (b)) ". Rzadko jest to mądre, ale czasem przydatne, gdy bardzo zwięzły kod jest preferowany w stosunku do czytelności lub do celów szybkiego debugowania. – Fx32
To się nazywa "wyrażenie" w JavaScript, to nie jest po prostu efekt operatora przecinka, chociaż odgrywa niewielką rolę; To wyrażenie zostało rozstrzygnięte z powodu operatora przecinka. Możesz ustawić wartość dowolnej zmiennej zmiennej dowolnego ocenianego wyrażenia. Nawet jeśli to wyrażenie jest niezdefiniowane. – Relic