The "initialization" depends on _where_ the "var" statement is found.
if the "var" defines a _global_ variable or a "unit variable" (which is a global in a unit, which may or may not be interfaced) then the variable is initialized because it is (normally) located in the initialized data segment (that's what FPC normally does.) Normally those variables are zero (binary zeroes which normally translates to a "normal" zero.)
if the "var" defines a procedure/function/method _local_ variable then it is NOT initialized. The variable will have whatever value is at the stack location it has been assigned by its offset from the frame pointer. IOW, it's initial value is random.
NOTE: the above applies to how the compiler behaves under Windows, it is possible there might be slight differences in other platforms.
Good programming requires that if you want to ensure a variable is initialized then, it should be explicitly initialized and _not_ depend on compiler behavior which may vary from one platform to another.
HTH.