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 LowerBound and UpperBound 判断变量是否在两个值之间, 而 if var [not] in value1,value2 可以用来判断变量内容是否存在于值列表中.

相关

表达式, 赋值表达式(:=), if var in/contains, if var between, IfInString, 区块, Else, While 循环

示例

#1

if (A_Index > 100)
    return

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

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
}

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

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