Q:

How to improve an old, bad question when editing may invalidate exising answers? 

This question that I asked last year is still receiving downvotes to this day. 
I've gotten better at programming, and now I realize how stupid the example code in the question is. 
I edited the question twice to clarify it with brand-new example code, but they were rolled back because they were too drastic. 
How do I improve my old question?  Asking a new question seems like a bad idea because it's a duplicate. 

A:

Generally, if a question was asked which presented an intelligible problem, we don't want the question to be edited in a way that invalidates answers already given. 
The degree to which it is enforced depends on context.  Editing a question without answers won't invalidate anything, so no problem.  If a question is still relatively new, and the answers the question is getting indicates that the question needs clarification, and the OP edits it in a way may invalidate answers, my experience is that such edits to a question are usually tolerated. 
However, the more settled the question has become, the less likely it is to be okay to edit the question such that existing answers become invalid.  Here are some salient points of the history of your question:

You posted it in Jan 11th 2017. 
You posted a bounty on Jan 17th 2017. 
You got an answer from me on Jan 18th 2017 explaining that we use functions for the problem you described.  
I cannot readily find a precise date for this, but at some point, you accepted my answer, and I got the bounty you had offered. ( It definitely was accepted, and I definitely got a reputation notification recently when it was unaccepted.  I can readily find the unacceptance event at 2018-07-13 05:09Z in my reputation history.) 
Then, roughly a year and a half after you asked your original question and accepted my answer, you decided to edit it in a way that invalidates my answer.  This part (in this edit) is not merely a clarification but a new requirement:

You may think, "Why not just use a function?"  Look, I dowant to store an EXPRESSION.  It should be possible to add expressions together and compare expressions. 

You also unaccepted my answer but that's entirely your prerogative. 

As I see it, your question has reached a long time ago the degree at which a question is so settled that radical edits become problematic.  If you want to correct typos, syntax errors, or just clarify the language, fine.  But adding new requirements is not okay. 
This being said, it looks like the problem you were trying to solve is your association with a heavily downvoted question.  You may ask moderators for being dissociated from your question.  I don't know the details of how that works though, other than you need to ask a moderator. 

A:

How do I improve my old question? 

By improving the question, rather than changing it into a different question.   Changing the way in which the question is asked, so that it's clearer, more concise, less ambiguous, better formatted, etc.  are all ways of improving a question.   Your edits weren't improving it, they were fundamentally changing what the question was asking for. 

Asking a new question seems like a bad idea because it's a duplicate. 

Your new question may be a duplicate of some other question, but it's not a duplicate of the question you're asking about.   Your existing question is asking how to defer execution of some code until a later point in time.   Your edited question is asking how to do static analysis of JavaScript code in order to determine if two arbitrary expressions are equivalent.   The first question is complete enough, insofar as it contains enough information to be answered.   People can, and have, provided you with solutions that allow you to defer execution of a given JavaScript expression until exactly the moment you desire.   
Your edited question is not only very different, but it's woefully incomplete.   You list off a handful of examples of expressions that you want to consider "equivalent", but, from my reading, there's no where near enough information to actually determine what you think equivalent expressions are, given that you've compared very different expressions (as far as what the compiler will interpret them) and said you want them to be equivalent.   Are you just asking how to determine if the results of evaluating the expressions are equivalent?   Because if so, even that isn't borne out by your examples.   Do you want to know if the results of evaluating the expressions can be implicitly converted to each other?   If so, then lots of wildly different expressions will be "equal".   Do you want to know the previous question, but with the added condition that the results be the same regardless of the state of the environment it's executed in? 
So all around very unclear.   And also, depending on which one of those many possible interpretations you're asking for, almost certainly too broad (the only one that wouldn't be is most likely evaluating the results of the expressions in the same environment and comparing them for either equality or whether one is convertible to the other, which frankly would make a bad question because "how do I execute these two expressions and compare their results for equality" is... a bad question.   You shouldn't need to ask on SO to figure out how to do that one. 

A:

While the subject is probably trivial for most users here, and especially probably most downvoters, I think the question is fine as it is.  
It's rather short, clear, and with sort of pseudocode examples. 
It is probably a general notion that is useful to many beginners. 
Some could find it too broad, but I think the problem is explicitly simple and is precisely answerable as it is (which makes it de facto not too broad). 
The title is fine too for me.  I can remember a time when I couldn't name the concept, this title matches what I could have typed in google to search by myself at the time. 
The fact that some answers have lots of upvotes is, to me, the proof that the question is useful. 
Some users landed here and find value in answer and upvoted it.  That means that the question is worthy of staying. 
If we could find a (canonical) duplicate, then, of course, it should be closed in favor of it.  In the opposite case, I think this question could be some target duplicate of other beginner's questions of the same vein.  I occasionally read some, and I unfortunately don't have an example right now. 
TL;DR
I'm sorry for your downvotes, I personally don't understand them either. 
Don't edit it (except for minor edition).  
If you find some more recent questions on the same subject without answer, flag them for duplicate to yours.  Maybe at some point you'll get more positive votes.