Można myśleć o document.write () (i .innerHTML) jako o ocenie ciągu kodu źródłowego. Może to być bardzo przydatne w wielu aplikacjach. Na przykład, jeśli otrzymujesz kod HTML jako ciąg znaków z jakiegoś źródła, dobrze jest po prostu go „ocenić”.
W kontekście Lisp manipulowanie DOM byłoby jak manipulowanie strukturą listy, np. Tworzenie listy (pomarańczowy) poprzez:
(cons 'orange '())
A document.write () byłoby jak ocena łańcucha, np. Utwórz listę, oceniając łańcuch kodu źródłowego w następujący sposób:
(eval-string "(cons 'orange '())")
Lisp ma również bardzo przydatną zdolność do tworzenia kodu przy użyciu manipulacji listami (np. Przy użyciu „stylu DOM” do utworzenia drzewa parsowania JS). Oznacza to, że możesz zbudować strukturę listy za pomocą „stylu DOM”, a nie „stylu ciągu”, a następnie uruchomić ten kod, np. W następujący sposób:
(eval '(cons 'orange '()))
Jeśli zaimplementujesz narzędzia do kodowania, takie jak proste edytory na żywo, bardzo przydatna jest możliwość szybkiej oceny ciągu, na przykład za pomocą document.write () lub .innerHTML. Lisp jest w tym sensie idealny, ale możesz robić bardzo fajne rzeczy również w JS, a wiele osób to robi, np. Http://jsbin.com/