Either numeric table names should be disallowed, or there should be a .name prop to be like $timer().name which returns $null if it exists or returns the Nth position of table named as that string.

//var -s %table $hget(0) + 2 | hadd -ms %table item value | echo -a does tablename %table exist: $hget(%table)

One scenario I can see this happening is when a tablename comes from $nopath(filename), where filenames 12345678 would create a table that $hget(string) thinks does not exist yet it does. Or filenames 0 or 1.234 could result in thinking that a table exists when it does not.

For $hget(N,1).item and $hget(N,1).data they should continue returning info about the 1st item of the Nth table in the list, and input could be sanitized to handle numeric tablenames by doing $hget($hget(N).name,1).item