On peut penser à document.write () (et .innerHTML) comme évaluant une chaîne de code source. Cela peut être très pratique pour de nombreuses applications. Par exemple, si vous obtenez du code HTML sous forme de chaîne à partir d'une source, il est pratique de simplement «l'évaluer».
Dans le contexte de Lisp, la manipulation DOM serait comme manipuler une structure de liste, par exemple créer la liste (orange) en faisant:
(cons 'orange '())
Et document.write () serait comme évaluer une chaîne, par exemple créer une liste en évaluant une chaîne de code source comme ceci:
(eval-string "(cons 'orange '())")
Lisp a également la capacité très utile de créer du code en utilisant la manipulation de liste (comme utiliser le "style DOM" pour créer un arbre d'analyse JS). Cela signifie que vous pouvez créer une structure de liste en utilisant le "style DOM", plutôt que le "style de chaîne", puis exécuter ce code, par exemple comme ceci:
(eval '(cons 'orange '()))
Si vous implémentez des outils de codage, comme de simples éditeurs en direct, il est très pratique d'avoir la possibilité d'évaluer rapidement une chaîne, par exemple en utilisant document.write () ou .innerHTML. Lisp est idéal dans ce sens, mais vous pouvez faire des trucs très sympas aussi dans JS, et beaucoup de gens le font, comme http://jsbin.com/