add-to-list和push应该如何选择?

凡事要自己实践啊

   (if append
        (append (symbol-value list-var) (list element))
     (cons element (symbol-value list-var) ))
(setq data '(2 3 4))

(let ((data '(5 6 7)))
  (print (add-to-list 'data 8)))

symbol-value is a built-in function in ‘C source code’.

(symbol-value SYMBOL)

Return SYMBOL’s value.  Error if that is void. 
Note that if ‘lexical-binding’ is in effect, this returns the
global value outside of any lexical scope.