Ograniczenia

Większość implementacji języka JavaScript opiera się luźno na podstawowym standardzie skryptu o nazwie ECMA. Poza standardem istnieje wspólny zestaw niestandardowych konstrukcji językowych obsługiwanych przez większość implementacji, a także inne funkcje i konstrukcje, które są obsługiwane tylko przez niektóre implementacje języka JavaScript.

Zarówno w znacznej liczbie publicznych pakietów JavaScript, jak i w ogólnych zastosowaniach języka JavaScript, używane są jego niestandardowe aspekty, co sprawia, że czyste modelowanie języka JavaScript jest trudne (albo niemożliwe). Zastosowane rozwiązanie obejmuje złożony mechanizm wnioskowania, który analizuje kod JavaScript, pomagając zbudować poprawny model. Niestety, wnioskowanie nie zawsze jest doskonałe. Z tego powodu wnioskowania dla niektórych klas JavaScript mogą być nieodpowiednie i powodować oznaczenie jako błędnych pól/metod/typów, które w rzeczywistości są poprawne. Oczywiście prowadzone są prace nad tym mechanizmem i w miarę ich postępów planowane jest wyeliminowanie bardziej problematycznych przypadków.