2011-11-02 15 views
6

Eclipse dodaje linia JavaScriptDlaczego Eclipse czasami ostrzega o tablicach tablic w JavaScript?

var a1 = [[1, 2], [3, 4]]; 

generuje ostrzeżenia:

Type mismatch: cannot convert from Number[] to any 
Type mismatch: cannot convert from Number[] to any 

podczas

var a2 = [['w', 'x'], ['y', 'z']]; 

generuje:

Type mismatch: cannot convert from String[] to any 
Type mismatch: cannot convert from String[] to any 

i

var a3 = [[1, 2], ['y', 'z']]; 

generuje:

Type mismatch: cannot convert from Number[] to any 
Type mismatch: cannot convert from String[] to any 

Jednak linie te są w porządku:

var a4 = [[1, 'x'], [3, 'y']]; 
var a5 = [[1, 2]]; 
var a6 = [['x', 'y']]; 

Wydaje się, że problem z tablicami tablic, gdy podrzędne tablice zawierają te same typ pierwotny. Jednak nie rozumiem dlaczego, a kod wydaje się być w porządku. Czy ktoś może wyjaśnić, o co martwi się Eclipse?

+3

Tylko moje 0,02 $ na ten temat, ale silnik JavaScript Zaćmienie jest nieco wkurzający o rzeczach. Może być tylko dziwactwem w jego działaniu. –

Odpowiedz

6

Wygląda jak błąd. Zasadniczo nie ma czegoś takiego jak niedopasowanie typu w JavaScript.

Zaryzykowałbym przypuszczenie, że analizator składni, który to robi, był oparty na analizatorze Java i jest to fragment tego oryginalnego parsera.

+1

[tutaj] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=351345) jest przykładem podobnego błędu w czasie zaćmienia. –

+0

Tak, myślę, że musisz mieć rację. Istnieją również inne wątpliwe ostrzeżenia, takie jak "var i; for (i in obj)", co oznacza, że ​​"zmienna lokalna nie została zainicjalizowana". –

0

Walidatory javascript w Eclipse można je filtrować w preferencjach.

Powiązane problemy