JavaScript: TypeError — Reduce of empty array with no initial value
La chiamata ad `array.reduce((acc, x) => acc + x)` lancia un'eccezione se l'array è vuoto e non è stato specificato un valore accumulatore iniziale nel secondo parametro.
Categoria
Articoli tecnici organizzati per gruppo funzionale.
La chiamata ad `array.reduce((acc, x) => acc + x)` lancia un'eccezione se l'array è vuoto e non è stato specificato un valore accumulatore iniziale nel secondo parametro.
La funzione `str.replaceAll(regex, ...)` richiede obbligatoriamente che la RegExp abbia il flag globale `/g` abilitato (es. `/pattern/g`); se il flag manca, il motore lancia un `TypeError`.
L'operatore spread (`[...x]`) applicato a un valore non iterabile (es. numeri, booleani o oggetti ordinari privi di `[Symbol.iterator]`) fallisce a runtime.
Il trap `get` di un `Proxy` tenta di restituire un valore differente rispetto al valore reale di una proprietà target che è sia non-scrivibile (`writable: false`) che non-configurabile (`configurable: false`).
Le variabili dichiarate con 'const' non possono essere riassegnate ('x = 10'); per consentire la riassegnazione è necessario utilizzare la parola chiave 'let', ricordando che per gli oggetti const è permessa la mutazione dei campi interni ma non dell'istanza.
In 'use strict' mode il motore JavaScript vieta e intercetta come errore fatale il tentativo di aggiungere proprietà personalizzate a tipi di dato primitivi immutabili come stringhe, numeri o booleani.
L'operatore di destrutturazione ES6 ('const { id, name } = data') genera questo errore fatale se 'data' vale undefined o null; si previene fornendo un valore predefinito: 'const { id } = data || {}'.
Molto simile all'errore con undefined, compare quando l'oggetto interrogato è esplicitamente 'null' (ad esempio il risultato di 'document.getElementById()' quando l'elemento DOM non viene trovato nella pagina).