Perché i Javascript per / in loop sono così dettagliati?

5

Sto cercando di capire il ragionamento alla base del motivo per cui i progettisti linguistici avrebbero reso il loop for (.. in ..) così dettagliato. Ad esempio:

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

Fa provare a ripetere su qualcosa di semi-complesso come sopra una vera sofferenza, dato che devi fare lo stesso alias del valore localmente nel loop, oppure gestire le chiamate di accesso lunghe. Questo è particolarmente doloroso se hai da due a tre cicli annidati.

Suppongo che ci sia una ragione per cui farebbero le cose in questo modo, ma sono alle prese con il ragionamento.

    
posta Matthew Scharley 16.02.2011 - 01:43
fonte

1 risposta

5

Quindi il tuo reclamo è che il ciclo for (var key in set ) in Javascript esegua il ciclo dell'indice, e non i valori (o entrambi) come foreach ($array as $key => $value) come PHP (e un numero di altri) do?

Penso che questo sia un tentativo di essere più in linea con uno standard for-loop, confrontare:

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

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

La coerenza è ottenuta in questo modo tra la forma originale, la divisione della coppia chiave / valore e la restituzione di entrambi potrebbe essere molto utile e infatti trovo il metodo JavaScript un dolore, ma è molto pulito.

Quale lingua ha preso in prestito originariamente? Qual è il metodo lì - lo stile Perl / PHP di foreach() è una radice diversa.

Personalmente, se sto usando JavaScript, sto usando jQuery, e questo ha jQuery.each () :

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

Leggi altre domande sui tag