Perché utilizzare le stringhe come chiavi di un array, la console sta mostrando quell'array senza questi valori dichiarati e mentre sta eseguendo l'iterazione con questi valori dove le chiavi non sono visualizzate? , anche se posso ottenerne il valore.Stringhe come chiavi di array in javascript
>> var arr = [ 0, 1, 2, 3 ];
undefined
>> arr["something"] = "aught";
"aught"
>> arr
[0, 1, 2, 3]
>> arr["something"]
"aught"
>> for(var i = arr.length; i--; console.log(arr[ i ]));
3
2
1
0
Capisco che gli array sono oggetti che ha messo in atto qualche tipo di interfaccia 'enumerate' nel motore di JavaScript. La cosa più interessante è che l'interprete non lancia alcun avvertimento o errore quindi ho trascorso un po 'di tempo a cercare dove i dati potrebbero essere persi. Ora, ho sbagliato e ho usato []
anziché {}
@abuduba, perché non c'è niente di sbagliato :-) Il tuo codice è perfettamente valido javascript. È ambiguo per il lettore poiché stai mescolando i 2 tipi di array ma è valido. Perché vorresti che l'interprete indichi che qualcosa non va quando non c'è niente di sbagliato. –
Questo è principalmente un problema di terminologia, ma javascript NON chiama in genere '{}' un array associativo. Lo chiamano un oggetto che ha proprietà. La maggior parte delle persone non è d'accordo sul fatto che è meglio non confondere le cose chiamando un oggetto javascript un array associativo? – jfriend00
Nota: Se si tenta di utilizzare '' defineProperty'' sull'array come '' Object.defineProperty.call (arr, 'qualcosa', 'aught'); '' genererà un errore. – David