# 标签

## 目录

- 语法和用法
- 类标签
- 动态标签
- 命名的循环
- 相关的

## 语法和用法

标签用来标识代码行, 可以作为 Goto 的目标或指定一个循环来跳出或继续. 标签由名称和冒号(:) 组成.

    this_is_a_label:

除了空格和注释外, 其他代码不能和标签写在同一行.

名称: 标签名不区分大小写, 且可以由除空格, tab, 逗号以及转义字符(`) 外的其他字符组成. 然而, 考虑到命名的惯例, 通常最好仅使用字母, 数字和下划线(例如: MyListView, Menu_File_Open 和 outer_loop).

作用域: 每个函数都有自己的局部标签列表. 在一个函数内部, 只有该函数的标签对脚本可见/可及.

目标: 标签的目标是下一个可执行的代码行. 可执行代码包含函数, 赋值, 表达式和区块, 但不包括指令, 标签, 热键或热字串. 在下面的例子中, `run_notepad_1` 和 `run_notepad_2` 标签都指向 `Run` 行:

    run_notepad_1:
    run_notepad_2:
        Run "notepad"
        return

执行: 与指令类似, 正常执行到标签时标签会被忽略.

## 类标签

热键和热字串定义看起来类似于标签, 但不是标签.

热键由热键和双冒号组成.

    ^a::

热字串由一个冒号, 零或多个选项, 另一个冒号, 一个缩写和双冒号组成.

    :*:btw::

## 动态标签

在某些情况下, 可以用变量代替标签名. 在这种情况下, 存储在变量中的名称被用来定位目标标签. 但是, 性能会稍微降低, 因为每次都必须 "查找" 目标标签名而不是只在脚本首次加载时查找一次.

## 命名的循环

标签还可以用来标识循环, 以便用于 Continue 和 Break 语句. 这样脚本可以很方便地继续或退出任意数目的内嵌循环.

## 相关

函数, IsLabel, Goto, Break, Continue

dftg