E 's non è davvero questione di vantaggio, ma di un uso corretto a seconda della necessità.
La differenza fondamentale è che:
createTextNode()
è un metodo e funziona proprio come dice il nome: si crea un elemento ... allora si deve fare qualcosa con esso (come nel tuo esempio, in cui si aggiungilo come un bambino);
quindi è utile se si vuole avere un nuovo elemento e metterlo da qualche parte
textContent
è una proprietà si può ottenere o impostare, con una dichiarazione unica e nient'altro;
quindi è utile quando si desidera solo modificare il contenuto di un già esistente elemento
Ora, nel caso specifico della tua domanda, lei ha detto di voler cambiamento il testo della elemento ...
Per essere più chiaro dire che si ha la seguente elemento HTML:
<span>Original text</span>
Se stai usando la tua prima soluzione:
var my_text = document.createTextNode('Hello!');
span.appendChild(my_text);
allora si concluderà con:
<span>Original textHello!</span>
perché si aggiunto tuo textNode
.
Quindi è necessario utilizzare la seconda soluzione.