I think because of the escape characters and your initial double quotes "". I have tested this a couple times and everytime I use your syntax of var emails_array = ["[\"theiremail1\",\"theiremail2\",\"theiremail3\"]"]; the length comes out 1 because of the initial quotes.
Perhaps a simpler string would work?
For certain, var emails_array = ['theiremail1', 'theiremail2', 'theiremail3']; will provide an emails_array.length of 3...
This gives me a .length of 3 in my test environment anyway. If you MUST use your original double bracketing because you actually want a string with brackets in it then the following works for me.
emails_array = ['[theiremail1', 'theiremail2', 'theiremail3]']; which will have a [ in position 0 and ] in position 2 if thats what you want.
The way you currently have your array setup it is actually only 1 length long because your first double quotes "" tell the compiler to see everything as one big string and it cannot see your delimiter , character.