Q: Is there any performance boost in caching an array lookup within a loop? Is there any performance boost in caching an array read within a loop, versus performing an array lookup with each loop iteration?
for (var i = 0; i < HEADER_DATA_KEYS.length; i++) {
    var headerKey = HEADER_DATA_KEYS[i];
    var msgVal = message[headerKey];
    doStuff(msgVal);
}

Versus:
for (var i = 0; i < HEADER_DATA_KEYS.length; i++) {
    var msgVal = message[HEADER_DATA_KEYS[i]];
    doStuff(msgVal);
}

Edit: yes, sorry wrong use of memoization. Thank you! 

A: There is some confusion of terminology.
Memoization is something that you do to functions to make subsequent recomputations cheaper. It's a classic example of a time/space trade off: The memo (usually a dictionary) takes up more space, but executes in minimal time.
Now, mathematically speaking, a JavaScript "array" is a function from N (non-negative integers) to Object (or whatever is stored in the array). But, with respect to time, arrays are already the cheapest functions to execute. Moreoever, they're also usually the most expensive in terms of space.
So, in other words: An array is already the "most memoized" possible function.

A: Memoization is when you store the result of a complex computation to avoid recomputing it the next time you need it.
var headerKey = HEADER_DATA_KEYS[i]; has nothing to do with memorization, you are simply assigning a value to a variable.
I haven't ran a performance test case, but I feel confident enough to say that the performance overhead of assigning a value to a variable is so minimal that it shouldn't even be considered in normal circumstances.
EDIT:
http://jsperf.com/var-assignation-cost
IE 11:

With assignation: 276,478,194 op/sec
Without: 327,503,873 op/sec

