una tablas tabla recorrer obtener filas editar dinamicas datos con agregar javascript spread-syntax number-literal

tablas - recorrer tabla javascript



Por que{....0} evaluar para{}? (4)

Acabo de encontrar {....0} en el código de un amigo. Evaluándolo en la consola devuelve {} (objeto vacío).

¿Porqué es eso? ¿Cuál es el significado de 4 puntos en JavaScript?


Cuatro puntos en realidad no tienen ningún significado. ... es el operador de propagación , y .0 es la abreviatura de 0.0 .

Al distribuir 0 (o cualquier número) en un objeto, se obtiene un objeto vacío, por lo tanto, {} .


El operador de propagación {...} permite expandir los iterables. Esto significa que los tipos de datos que se pueden definir en forma de pares key-value se pueden expandir. En términos de Object , llamamos par clave-valor como propiedad de Objeto y su valor, mientras que en términos de arrays podemos pensar en el índice como clave y elemento en la matriz como su valor.

let obj = { a: 4, b: 1}; let obj2 = { ...obj, c: 2, d: 4}; // {a: 4, b: 1, c: 2, d: 4} let arr1 = [''1'', ''2'']; let obj3 = { ...arr1, ...[''3'']}; // {0: "3", 1: "2"}

En términos de matriz, ya que toma el índice como clave, aquí reemplaza el elemento ''1'' de arr1 por ''3'' porque ambos tienen el mismo índice en una matriz diferente.

Con cadenas demasiado extendidas, el operador devuelve el objeto no vacío. Como cadena es una matriz de caracteres, trata la cadena como una matriz.

let obj4 = {...''hi'',...''hello''} // {0: "h", 1: "e", 2: "l", 3: "l", 4: "o"} let obj5 = {...''y'',...''x''} // {0: "x" }

Pero con otros tipos de datos primitivos devuelve un objeto vacío

con numeros

let obj6 = { ...0.0, ...55} // {}

con booleano

let obj7 = { ...true, ...false} // {}

En conclusión, los tipos de datos que pueden tratarse en forma de pares clave-valor cuando se usan con el operador de propagación {...} devuelven un objeto no vacío {}


En términos simples, {...} operador de extensión en javascript extiende un objeto / matriz con otro.

Entonces, cuando babelifier intenta extender una con otra, tiene que identificar si está tratando de extender una matriz o un objeto.

En el caso de array , itera sobre elementos.

En el caso de object , itera sobre teclas.

En este escenario, el babelyfier está intentando extraer claves para el number al verificar la own property call del Objeto que falta para el number por lo que devuelve el Objeto vacío.


Tres puntos en un objeto literal son una propiedad de propagación , por ejemplo:

const a = { b: 1, c: 1 }; const d = { ...a, e: 1 }; // { b: 1, c: 1, e: 1 }

El último punto con un 0 es un número literal .0 es lo mismo que 0.0 . Por lo tanto esto:

{ ...(0.0) }

distribuye todas las propiedades del objeto número en el objeto, sin embargo, como los números no tienen ninguna propiedad (propia), usted recupera un objeto vacío.