I read [here](https://www.gnu.org/software/emacs/manual/html_node/eintr/defvar.html) that *defvar* only sets the value of a variable if it doesn't already have a value.
Then I tried to test it in scratch buffer, but could not verify that. *defvar* always sets the value no matter what.
Did some googling, found some stackover flow answers stating the same.
Got quite confused for quite some time.
Then decided to read elisp mannal, found this:
When you evaluate a top-level ‘defvar’ form with ‘C-M-x’
(‘eval-defun’) or with ‘C-x C-e’ (‘eval-last-sexp’) in Emacs Lisp
mode, a special feature of these two commands arranges to set the
variable unconditionally, without testing whether its value is
void.
relieved. Isn't this a bit strange? That it doesn't work the same way when you want to test it out by *C-x C-e*