var关键字
类似于JavaScript中的var,可以接收任何类型的变量。但最大的不同是 Dart 中 var 变量一旦赋值,类型便会确定,则不能再改变其类型
vart="hi world";
// 下面代码在dart中会报错,因为变量t的类型已经确定为String,
// 类型一旦确定后则不能再更改其类型。
t=1000;
上面的代码在 JavaScript 是没有问题的,前端开发者需要注意一下,之所以有此差异是因为 Dart 本身是一个强类型语言,任何变量都是有确定类型的,在 Dart 中,当用var声明一个变量后,Dart 在编译时会根据第一次赋值数据的类型来推断其类型,编译结束后其类型就已经被确定,而 JavaScript 是纯粹的弱类型脚本语言,var 只是变量的声明方式而已。
dynamic 和 Object
相同点:dynamic与Object声明的变量都可以赋值任意对象,且后期可以改变赋值的类型
dynamic t;
Object x;
t="hi world";
x='Hello Object';
//下面代码没有问题
t=1000;
x=1000;
不同点:dynamic与Object不同的是dynamic声明的对象编译器会提供所有可能的组合,而Object声明的对象只能使用 Object 的属性与方法, 否则编译器会报错
final 和 const
final就是运行时常量,const是编译时常量。
const:修饰的常量必须在声明时初始化,并且是可以确定的值,不是需要经过计算的值。可定义构造函数变量。
final:修饰的常量必须在声明进初始化或者在构造函数中初始化,它的值可以动态计算。
共同点是两者赋值后就不能再修改(不能重新赋值,对于引用类型可以修改属性)。
late 变量将在未来初始化
网友评论