Friday, 8 December 2017

javascript - Why console.log((!+[]+[]+![]).length) gives 9?





By what logic js works (!+[]+[]+![]).length
returns 9? How is that possible?
As I know js has dynamic types cast but very
hard to understand whats going on here



class="snippet" data-lang="js" data-hide="false" data-console="true"
data-babel="false">

class="snippet-code-js lang-js
prettyprint-override">console.log((!+[]+[]+![]).length);





Answer




First we have to understand
!+[]+[]+![]:



!+[] = !0 = true

true+[] = "true"
![] = false
"true"+false =
"truefalse"


so length
of !+[]+[]+![] is length of "truefalse" so it's
9



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...