2012-08-17 9 views
5

Necesito una matriz tipada, específicamente una Float32Array, de todos los ceros. Estaba pensando que tendría que borrarlo manualmente, pero me di cuenta de que cuando lo declare, ya estaba en cero. ¿Esto es algo que se especifica en la especificación? ¿Puedo confiar en este comportamiento?¿Las matrices con Javascript se inicializaron en 0?

+0

¿Qué quiere decir con 'cero'? – KooiInc

+0

¿Puedes mostrar tu código? javascript no tiene matrices tipadas. Una matriz contiene todo lo que decida poner en ella; p.ej. '[1," hello ", {a: 3}]' es una matriz válida en javascript. – jackwanders

+0

Esto es lo que obtengo en la consola de Google Chrome. 'a = new Float32Array (10)' devuelve '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]'. Estoy usando matrices tipadas porque estoy trabajando en WebGL. Son diferentes de la matriz estándar, y dado que es principalmente para WebGL, es un poco esotérico. Debería haber especificado eso. – SharkCop

Respuesta

5

Según JavaScript's Typed Array Specification, contents are initialized to 0. Entonces deberías poder confiar en este comportamiento.

Tenga en cuenta que las matrices mecanografiadas don't have very good cross browser support yet. Chrome, Safari, Firefox y Opera lo admiten, pero Internet Explorer solo presentó soporte en IE10.

Debo mencionar también que las matrices tipadas son actualmente extremely slow in Safari en comparación con las matrices normales. Por esta razón, es mejor que evites las matrices tipadas a menos que no tengas como objetivo Safari. Usando matrices normales, todos los valores de la matriz se inicializan como undefined.

-4

Por defecto, las matrices contienen null si las construye con un tamaño. Desde null == 0, podría considerarlo lleno con 0, o cualquier otro valor de falsy. Sin embargo, se encontrará con problemas si intenta llamar métodos a los números, como .toString. O si lo ejecuta a través de una función que espera un formulario numérico como parseInt.

Idealmente, siempre se debe inicializar una matriz de modo que usted sepa exactamente lo que contiene, aunque personalmente nunca he oído hablar de matrices con tipo de JS ...

+0

* Por defecto, las matrices contienen nulo si las construyes con un tamaño *: no. Pruebe en su consola: 'var a = []; a.length = 5; console.log (a [3]) 'o' var a = new Array (5); console.log (a [3]) ' – KooiInc

+0

Ambos me dan una matriz llena de' null's, a menos que sea un malentendido. –

+0

¿Tal vez hay una diferencia en el navegador? En la consola de Chrome 'console.log (a)' muestra '[undefined × 5]' – KooiInc

Cuestiones relacionadas