No, this is not like _javascript_! 'undef' is NOT a value.
But it is used as a value. It sounds strange to me...
t[i]=undef is a special syntax form that means "remove the key 'i'
from table 't'".
But it seems like an assignment. Wouldn't be better to create a special syntax for removing a key from a table instead pretending it as an assingment?
You should have considered a pair of functions, such as table.undefine(t, i) to undefine a key, and table.defined(t, i) to check whether the table has the key. Why did you choose the assignment?