# 声明常量 ## 功能 常量用于保存定义后不允许再次写入的绑定,适合配置项、固定标识、数学常数和不会变化的函数或类引用。 ## 语法 ```bt Name = 'Lisa' Name_1 = 'Lisa' NAME = 'BT' ``` ## 命名规则 | 规则 | 说明 | | ------ | ------ | | 首字母 | 必须是大写英文字母。 | | 后续字符 | 可以是英文字母、数字或 `_`。 | | 大小写 | 区分大小写,`Name` 和 `NAME` 是两个不同常量。 | `Name`、`Config`、`NAME`、`Name_1` 都是常量名;`User$` 不是合法常量名,因为常量名不能包含 `$`。 ## 返回值 | 类型 | 说明 | | ------ | ------ | | Any | 常量定义表达式返回右侧表达式的值。 | ## 代码示例 ```bt Name = 'Lisa' fn first() { Token = 'A' Token } fn second() { Token = 'B' Token } println Name println first() println second() ``` ## 注意事项 - 常量不能重复定义;同一作用域内第二次写入会报错。 - 常量不使用 `let`;`let` 只用于普通变量,`let Name = 1` 会按变量命名规则报错。 - 全局常量在当前 VM 中长期存在,函数内不能定义同名常量,也不能定义与已有全局变量同名的常量。 - 函数内第一次定义的常量属于函数局部作用域,函数调用结束后销毁;不同函数内可以定义同名局部常量。 - 常量名只保护绑定本身;如果常量保存的是对象或数组,是否修改其内部字段取决于对象或数组方法本身。