# IF.EAGER

Checks a condition, and returns one value when TRUE, otherwise it returns a second value. It uses an *eager* execution plan which always executes the branch expressions regardless of the condition expression.

## Syntax

```
IF.EAGER(<logical_test>, <value_if_true>[, <value_if_false>])
```

### Parameters

Term | Definition |
---|---|

logical_test | Any value or expression that can be evaluated to TRUE or FALSE. |

value_if_true | The value that's returned if the logical test is TRUE. |

value_if_false | (Optional) The value that's returned if the logical test is FALSE. If omitted, BLANK is returned. |

## Return value

Either **value_if_true**, **value_if_false**, or BLANK.

## Remarks

The IF.EAGER function can return a variant data type if value_if_true and value_if_false are of different data types, but the function attempts to return a single data type if both

**value_if_true**and**value_if_false**are of numeric data types. In the latter case, the IF.EAGER function will implicitly convert data types to accommodate both values.For example, the formula

`IF.EAGER(<condition>, TRUE(), 0)`

returns TRUE or 0, but the formula`IF.EAGER(<condition>, 1.0, 0)`

returns only decimal values even though**value_if_false**is of the whole number data type. To learn more about implicit data type conversion, see Data types.IF.EAGER has the same functional behavior as the IF function, but performance may differ due to differences in execution plans.

`IF.EAGER(<logical_test>, <value_if_true>, <value_if_false>)`

has the same execution plan as the following DAX expression:`VAR _value_if_true = <value_if_true> VAR _value_if_false = <value_if_false> RETURN IF (<logical_test>, _value_if_true, _value_if_false)`

Note: The two branch expressions are evaluated regardless of the condition expression.

## Examples

See IF Examples.