Indeed this code would cause an issue for me, since the issue is not due to
referencing of the nonexistent item, rather inside the loop I do something
like:
$each(arr, function(item, i) {
item.foo(); // this will throw an error on undefiled object and stop JS
})
My workaround by the way is to check weather i == 0 (this is a special array
I use where I normally start at position 1).
FF's implementation does actually jump over position 0 - starting at 1, that
would be logical interpretation of "foreach" vs "for (i =0 ; i < smt.length
; i++)" - where I tell him to begin at position 0 explicitly.
Cheers
-- Roman
On Tue, Dec 15, 2009 at 1:18 AM, Aaron Newton <[email protected]> wrote:
> Here is the code for forEach, implemented into browsers that do not
> implement it themselves:
>
> forEach: function(fn, bind){
> for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i,
> this);
> }
>
> as you can see, it loops over each item and calls your function, passing
> the array's value at i. This is undefined for your zero value. I don't know
> where IE would freak out on this (though it doesn't surprise me that it
> might). The code above references yourArray[index] that shouldn't throw an
> error...
>
> Aaron
>
> On Mon, Dec 14, 2009 at 12:31 PM, Roman Land <[email protected]> wrote:
>
>> Lolz on the kindly:)
>>
>> Paul, this site is meant to work on all browsers, I currently have a
>> work around, this behavior is undesired despite it's roots being in ie
>> implementation of foreach.
>>
>> Cheers, Roman
>>
>> On 14/12/2009, at 18:28, Paul Saukas <[email protected]> wrote:
>>
>>
>> > Roman ,
>> >
>> > I believe that is an IE issue . I have no problem running your
>> > example on IE8 . It just kindly spits undefined out in place of the
>> > missing element 0 if i have it display the items, If i do the keys
>> > then IE shows 01234 and ff 1234. What version of IE are you using ?
>>
>
>
--
---
"Make everything as simple as possible, but not simpler."
- Albert Einstein