`NIntegrate` owns the attribute `HoldAll`: Attributes@NIntegrate (* {HoldAll, Protected} *) However, when reading [this answer][1], I surprisingly noticed that at least in the following case the 1st argument of `NIntegrate` is actually evaluated!: NIntegrate[BesselJ[9/2, x], {x, 1, 2}] // Trace [![enter image description here][2]][2] So my question is, does `NIntegrate` **always** evaluates its 1st argument? If the answer is Yes, what's the meaning of this design, why not simply use `HoldRest`? [1]: https://mathematica.stackexchange.com/a/117908/1871 [2]: https://i.sstatic.net/pTWBU.png