Considere este fragmento
const div = document.createElement('div'); div.innerHTML = null; // 1 console.log(`After setting null: "${div.innerHTML}"`); div.innerHTML = undefined; // 2 console.log(`After setting undefined: "${div.innerHTML}"`); ¿Por qué el primer fragmento de innerHTML no produce "null" ? Esperaba que el valor fuera el resultado de innerHTML = value igual que String(value) como espera un DOMString ? String(null) produce "null" .
MDN también menciona el enfoque ToString que también devuelve "null" . Lo único que podría insinuar este comportamiento especial es este fragmento de la página en DOMString
Ciertas API web que aceptan un DOMString tienen un comportamiento heredado adicional, en el que pasar una cadena nula se convierte en la cadena vacía en lugar del "nulo" habitual.
¿Hay algún lugar definitivo (especificación o de otro tipo) desde donde se pueda confirmar tal comportamiento?
Sí, hay una especificación: https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin
innerHTML tiene el "atributo extendido IDL" LegacyNullToEmptyString que describe este comportamiento.