If (表达式)

指定在表达式计算结果为 true(真) 时执行的一个或多个语句.

If (表达式)
{
    语句
}

备注

包含表达式的 If 语句通常通过将表达式括在括号中来区别于遗留-If 语句(如 If FoundColor != Blue). 但是, 这并不是严格要求的, 因为任何不匹配传统 if 模式If 语句都假定为包含表达式. 特别地, 以下也是编写 If (表达式) 的常用方法:

已知限制: 由于历史原因, If (表达式) 实际接受数字参数而不是纯表达式. 例如, if %MyVar% 等同于 if MyVar. 这可以通过始终将表达式括在括号中来避免.

如果 If 语句中表达式的计算结果为 true(即除空字符串和数值 0 以外的任何结果), 那么执行 if 语句下的行或区块. 否则如果有相应的 Else 语句, 则会跳到 else 下的行或区块执行.

如果 If 拥有多行, 那么这些行必须用大括号括起来(创建一个区块). 但是, 如果只有一行属于 If, 则大括号是可选的. 请参阅此页面底部的示例.

if 关键字与后面的左括号之间的空格可有可无, 比如这样写 if(expression) 也是完全一样的.

One True Brace(OTB) 风格可用于表达式形式的 If 语句中(但不能用于遗留的 If 语句). 例如:

if (x < y) {
    ; ...
}
if WinExist("Untitled - Notepad") {
    WinActivate
}
if IsDone {
    ; ...
} else {
    ; ...
}

If 语句不同, Else 语句支持任何类型的语句紧跟在其右边.

相关提示, 语句 If Var [not] between Low and High 判断变量是否在两个值之间, 而 If Var [not] in/contains MatchList 可以用来判断变量内容是否存在于值列表中.

表达式, 赋值表达式(:=), If Var [not] in/contains MatchList, If Var [not] between Low and High, IfInString, 区块, Else, While 循环

示例

如果 A_Index 大于 100, 则返回.

if (A_Index > 100)
    return

如果 A_TickCount - StartTime 的结果大于 2*MaxTime + 100 的结果, 显示 "Too much time has passed." 并终止脚本.

if (A_TickCount - StartTime > 2*MaxTime + 100)
{
    MsgBox Too much time has passed.
    ExitApp
}

本例执行如下:

  1. 如果 Color 是单词 "Blue" 或 "White":
    1. 则显示 "The color is one of the allowed values.".
    2. 终止脚本.
  2. 否则如果 Color 是单词 "Silver":
    1. 显示 "Silver is not an allowed color.".
    2. 停止进一步的检查.
  3. 否则:
    1. 显示 "This color is not recognized.".
    2. 终止脚本.
if (Color = "Blue" or Color = "White")
{
    MsgBox The color is one of the allowed values.
    ExitApp
}
else if (Color = "Silver")
{
    MsgBox Silver is not an allowed color.
    return
}
else
{
    MsgBox This color is not recognized.
    ExitApp
}

单个多语句行不需要用大括号括起来.

MyVar := 3
if (MyVar > 2)
    MyVar++, MyVar := MyVar - 4, MyVar .= " test"
MsgBox % MyVar  ; 报告 "0 test".