Можно рассматривать document.write () (и .innerHTML) как оценку строки исходного кода. Это может быть очень удобно для многих приложений. Например, если вы получаете HTML-код в виде строки из некоторого источника, удобно просто «оценить» его.
В контексте Lisp манипулирование DOM было бы похоже на манипулирование структурой списка, например, создать список (оранжевый), выполнив:
(cons 'orange '())
И document.write () будет как вычисление строки, например создайте список, оценив строку исходного кода следующим образом:
(eval-string "(cons 'orange '())")
Lisp также имеет очень полезную возможность создавать код, используя манипуляции со списком (например, используя "стиль DOM" для создания дерева разбора JS). Это означает, что вы можете создать структуру списка, используя «стиль DOM», а не «стиль строки», а затем запустить этот код, например, как это:
(eval '(cons 'orange '()))
Если вы реализуете инструменты кодирования, такие как простые живые редакторы, очень удобно иметь возможность быстро вычислять строку, например, используя document.write () или .innerHTML. Lisp идеален в этом смысле, но вы можете делать очень крутые вещи и в JS, и многие люди делают это, например http://jsbin.com/