Por que o Javascript para / in é tão detalhado?

5

Estou tentando entender o raciocínio por que os designers de linguagem tornariam os for (.. in ..) loops tão detalhados. Por exemplo:

for (var x in Drupal.settings.module.stuff) {
    alert("Index: " + x + "\nValue: " + Drupal.settings.module.stuff[x]);
}

Faz com que o loop de algo semi-complexo como o descrito acima seja um problema real, já que você tem que aliasar o valor localmente dentro do loop, ou lidar com chamadas de acesso longas. Isso é especialmente doloroso se você tiver dois ou três loops aninhados.

Estou assumindo que há uma razão pela qual eles fariam as coisas dessa maneira, mas estou lutando com o raciocínio.

    
por Matthew Scharley 16.02.2011 / 01:43
fonte

1 resposta

5

Então, a sua reclamação é que o loop for (var key in set ) em Javascript faz um loop no índice, e não os valores (ou ambos) como foreach ($array as $key => $value) como o PHP (e vários outros)?

Acho que esta é uma tentativa de estar mais em linha com um loop padrão, compare:

for (var index = 0; index < set.length; index++) {
    f(set[index]);
}

for (var key in set) {
    f(set[key]);
}

A consistência é alcançada desta forma entre o formulário original, dividindo o par de chave / valor e retornando ambos podem muito bem ser muito úteis e de fato eu acho o método JavaScript uma dor, mas é muito limpo.

De qual idioma ele foi emprestado originalmente? Qual é o método lá - o estilo Perl / PHP de foreach() é uma raiz diferente.

Pessoalmente, se estou usando JavaScript, estou usando o jQuery e isso tem jQuery.each () :

$.each(set, function(key, value) {
    f(value);  // or f(this); -- though 'this' will be an object in all cases
});
    
por 16.02.2011 / 01:51
fonte