A nice trick in JMP:
you can press the Enter Key on the numeric keyboard to run one line of code.
This is very helpful for debugging.
another trick:
right click into the script window and activate:

the last trick:
mark the Eval Expr(...) inside an Eval() and "run" it to check if the expression is what you expect:

This shows that where you write
// Evaluate e1 here.
Name Expr just takes the Expression which is stored in the variable. It doesn't evaluate it. e1 stays e1.
Edit:
But maybe this is what you want to achieve? No question - just a comment?
The JSL script will write "e1" into the table script.
And JMP will try to evaluate e1 when the user runs the table script.
This means: you have to define e1 in the context of the data table, otherwise you will get an error message:

[e1 is just defined within the here namespace of the script]