4 ms·
You raise a good point that JavaScript arrays are "just" objects that let you assign to arbitrary properties through the same syntax as array indexing. I could
by saghm 2y ago
You raise a good point that JavaScript arrays are "just" objects that let you assign to arbitrary properties through the same syntax as array indexing. I could totally imagine some sort of optimization where a compiler utilizes this to be able to map arrays directly to their underlying memory layout (presumably with a length prefix), and that would end up potentially providing access to it in the case of a mistaken assumption about omitting a bounds check.
- bryanrasmussen 2y agoyeah you know what you said made me think about these funny experiments that I haven't done in a long time and I remember now yeah, you can do const arr = []; arr[false] = "hi"; which console.log(arr); - in FF at least - gives Array [] false: "hi" length: 0 which means console.log(arr[Boolean(arr.length)]); returns hi which is funny, I just feel there must be an exploit somewhere among this area of things, but maybe not because it would be well covered. on edit: for example since the index could be achieved - for some reason - from numeric operation that output NaN, you would then have NaN: "hi", or since the arr[-1] gives you "-1": "hi" but arr[0 -1] returns that "hi" there are obviously type conversions going on in the indexing...which just always struck me as a place you don't expect the type conversions to be going on the way you do with a == b; Maybe I am just easily freaked out by things as I get older.