@Ginden: @M4ks: Dokładnie w każdym języku masz takie konstrukcje które są skutkiem ubocznym przewidzianych zachowań. Ten kod jest poprawny z punktu widzenia składni jednak żaden linter nie przepuści czegoś takiego (przykrywanie parametrów zmiennymi lokalnymi). To tylko ciekawostka na temat fat arrow functions :)
@M4ks: w Javie może nie, jednak java nie jest dynamicznie typowanym językiem. Dla mnie to nie są jakieś super straszne rzeczy bo takich konstrukcji się nie używa. Straszne to są szablony w c++, których się niestety używa. Js jest prosty i przewidywalny jak dogłębnie go poznasz. Ma stosunkowo mało nieokreślonych zachowań (kolejny raz króluje c++, dzięki temu jest taki szybki bo to znaczy, że kompilatory mogą takie zachowania optymalizować na
(function(x, f = () => x) {var x;
var y = x;
x = 2;
return [x, y, f()];
})(1)
a) [2, 1, 1]
b) [2, undefined, 1]
c) [2, 1, 2]
d) [2, undefined, 2]
#javascript
źródło: comment_aATEk7yI11gLdKk0Y8rxyvrthHzamQXp.jpg
Pobierz@Ginden: no, ale np. w Javie czy Pythonie takich jazd nie zrobisz, chociazby z zapisem 'var x; var y = x'.
Komentarz usunięty przez autora
@regis3: no konsola co innego pokazuje...
@MirkoStats: dwuznaczność, która niczego tak naprawde w zamian nie oferuje.
@P0lip: no to tym bardziej jestem ciekaw.
Komentarz usunięty przez autora
Poza tym to pytanie było w quizie kangaxa