在 Dart 语言中,var、final 和 const 在声明变量时的行为有何不同?请分别阐述它们的特点,并举例说明各自适合的使用场景。
考察说明
考察对 Dart 语言中变量声明关键字语义差异的理解及场景应用能力。
回答思路
- 【回答框架 1】var 用于声明变量,其类型由首次赋值推断,之后不能再赋不同类型的值,但可以重新赋值相同类型的值。var 是运行时变量,声明的值在运行时确定。
- 【回答框架 2】final 用于声明只能赋值一次的变量,其值在运行时确定,但只能赋值一次。final 变量在第一次使用前必须初始化,适合表示运行时可确定但不应改变的数值,如从外部读取的配置。
- 【回答框架 3】const 用于声明编译时常量,值在编译时就必须确定,且必须是常量表达式。const 变量隐式为 final,适合表示固定不变的字面量或数学常量。
- 【回答框架 4】场景上,优先用 const 表达编译期常量,用 final 表达运行时一次性赋值,用 var 表达需要重新赋值的局部变量。区分关键在值确定时机与可变性。
- 【关键点 1】var 类型推断,可重新赋值但类型固定。
- 【关键点 2】final 值运行时可确定,但只能赋值一次。
- 【关键点 3】const 值编译时确定,且不能变更。
- 【关键点 4】const 是编译期常量,final 是运行时常量。
- 【易错点 1】误认为 var 可改变类型。
- 【易错点 2】混淆 final 与 const 的初始化时机。
- 【易错点 3】对 const 要求编译时常量表达式,错误使用运行时函数。