`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