if you read the literal function name - for*each* - makes you expect they
function to run over existing array banks only.
That is the only part I am arguing about, I dont see how is my array "dirty"
for not having an element in position 0.

On Tue, Dec 15, 2009 at 3:17 AM, Steve Onnis <[email protected]> wrote:

>  i would disagree
>
> if you say "hey here is an array, can you loop over it for me?" then it is
> doing what you ask it to do...its not the functions fault that you hand it
> dirty data. its up to you as a programmer to deal with the data correctly.
>
>  ------------------------------
> *From:* Roman Land [mailto:[email protected]]
> *Sent:* Tuesday, 15 December 2009 11:53 AM
>
> *To:* [email protected]
> *Subject:* Re: [Moo] Found a very annoying bug..
>
>  Thats true, it does look better.
>
> About who's fault it is, I would expect a "foreach" loop not to try to
> itterate over an non existant element (at position 0 or whatever), the fact
> I am trying to use this nonexistent element later is not so evil IMO :)
>
> for ( var thought in thoughts) { if (thought) alert("I think, therefor I
> exist!") }
>
> On Tue, Dec 15, 2009 at 2:32 AM, Aaron Newton <[email protected]> wrote:
>
>> this is by far the better option.
>>
>> it's not IE's fault that you are trying to reference something that
>> doesn't exist. This isn't a bug in IE or MooTools.
>>
>>
>> On Mon, Dec 14, 2009 at 7:09 PM, Barry van Oudtshoorn <
>> [email protected]> wrote:
>>
>>> What about doing something like
>>>
>>> $each(arr, function(item) {
>>>   if (item && item.foo) item.foo();
>>> })
>>>
>>> It's more robust and will mean that you can start indexing your arrays
>>> from whatever you want.
>>>
>>>
>>> On 15/12/09 08:04, Roman Land wrote:
>>>
>>> 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
>>>
>>>
>>>
>>> --
>>> Not sent from my iPhone.
>>>
>>>
>>
>
>
> --
> ---
> "Make everything as simple as possible, but not simpler."
>
> - Albert Einstein
>
>


-- 
---
"Make everything as simple as possible, but not simpler."

- Albert Einstein

Reply via email to