定义一个引用变量 x 的保持表达式 (held expression):

因为 Hold 具有属性 HoldAll,在定义保持表达式时x 没有被计算,所以表达式的主体指代的是全局变量 x. 当 Hold 被释放时x 获得它的值:

如果想强制 x 在定义保持表达式时被计算,请使用 With

现在,x 的改变将不会影响 Hold 被释放时返回的值:

技术要点

该技巧适用于具有 HoldAllHoldFirstHoldRestHoldAllComplete 属性的所有函数,例如, Function 自身:
Evaluate 可被用来将保持参数中的变量解析为它的值,但仅限于它是参数的上层函数的情况. 比较下面的例子: