Оба одинаковы, за исключением того, что первый инициализирован, а второй - нет.
Как документ говорит:
Неинициализированпеременные имеют начальное значение ноль.Даже переменные с числовыми типами изначально равны нулю, потому что числа - как и все в Dart - являются объектами.
Таким образом, любая неинициализированная переменная неявно будет иметь нулевое значение, как мы знаем, null в Dartтакже объект типа Null
.
void main() {
String c;
int d;
Symbol e;
print(c.runtimeType);
print(d.runtimeType);
print(e.runtimeType);
}
Все runtimeType
s выше будут печатать Null
.И если вы правильно инициализируете переменную b
, она в равной степени напечатает JSArray<foo>
.
void main() {
final a = List<foo>() ;
List<foo> b = [foo()];
print(a.runtimeType);
print(b.runtimeType);
}
. При печати JSArray<foo>
вы, вероятно, запускаете ее на DartPad или в виде веб-приложения, вкоторый Дарт скомпилирован в JS.Если вы запускаете его локально как серверное или клиентское приложение, оно выдает List<foo>
.