Wpis z mikrobloga

Strona 197 rozdzial 7 - autorzy użyli double banga. Hipstersko. Ale problematycznie. Nie wyjaśniono co to. Ponadto nie jestem fanem tego zapisu:

Let x = !!y

Co to oznacza? Jaka byla intencją programisty? Ryzyko wielu bledow #angular
  • 9
no przecież tego nie ma, ogólnie mi chodziło o to, że cokolwiek by było w y to zostanie zrzutowane na booleana, czyli np. jak y = 1 to x === true, jak y = 0 to x === false, itd.
@tomi_12: tak. No właście w tym problem, że y nie ma. I nie wiadomo co tam będzie. Działanie !! nie jest oczywiste i ma wyjątki. Gdy go używasz nie wiadomo jakie y-ki akceptujesz w kodzie, oraz co tak naprawdę chcesz zrobić używając !! biorąc pod uwagę, że różne y-ki mogą przyjść.
@tomi_12: ten artykuł ma zebrane wszystkie plusy i minusy. Jak dla mnie stosowanie double bang ma więcej minusów https://www.sitepoint.com/javascript-double-negation-trick-trouble/

M.in. dlatego:

return ! !window; //Returns true
return ! !null; //Returns false
return ! !undefined; //Returns false
return ! !false; //Returns false
return ! !true; //Returns true
return ! !""; //Returns false
return ! !"Hi"; //Returns true
return ! !0; //Returns false
return ! !1; //Returns true

Double bang przyjmie wszystko. Zawsze