Completeness of Abstract Domains for String Analysis of JavaScript Programs