Created
April 18, 2010 19:20
-
-
Save lukaszkorecki/370488 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| new Boolean(null) | |
| // => false | |
| typeof false; | |
| // => "boolean" | |
| typeof new Boolean(null) | |
| // => "object" | |
| // Obviously: | |
| false == new Boolean(null) | |
| // => true | |
| false === new Boolean(null) | |
| // => false | |
| // Best way (probably faster as well): | |
| !!null | |
| // => false | |
| !!null === false | |
| // => true |
Author
Zachowanie jest spoko, jedyne dziwactwo jest takie, że możesz mieć false które niekoniecznie jest typu boolean. Przyzwyczaiłem się do takich rzeczy w JS, ale wczoraj mnie to prostu mocno ugryzło :-)
Można się zdziwić czasami - to prawda. Rozchodzi się o to, żeby sprawdzać dokładnie typy. Choć w wypadku kiedy możemy dostać booleana albo obiekt Boolean, to trzeba by jakoś to inaczej kontrolować. Swoją drogą prototype nie ma może metod do sprawdzania tych "pseudotypów"? Bo o ile przypadek z Booleanem byłby dosyć abstrakcyjny, to ze Stringiem może już być różnie.
Cóż... Nic nie jest idealne ;)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
1, 3, 5 - oczywiste
9 i 11 też
15 lubię i używam - pamiętam jak pierwszy raz na to trafiłem w kodzie, to zacząłem się polewać :P
W każdym razie nie widzę tu żadnych dziwactw :)