Skip to content

Instantly share code, notes, and snippets.

@lukaszkorecki
Created April 18, 2010 19:20
Show Gist options
  • Select an option

  • Save lukaszkorecki/370488 to your computer and use it in GitHub Desktop.

Select an option

Save lukaszkorecki/370488 to your computer and use it in GitHub Desktop.
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
@Reinmar
Copy link
Copy Markdown

Reinmar commented Apr 18, 2010

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 :)

@lukaszkorecki
Copy link
Copy Markdown
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 :-)

@Reinmar
Copy link
Copy Markdown

Reinmar commented Apr 19, 2010

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