@tunait, el ejemplo que pones falla cuando en la cadena donde quieres reemplazar existe lo que quieres reemplazar mas de una vez.. 
Ejemplo: en esto quiero reemplazar " " (espacio) por "-" (guion) 
Utilizando tu forma y pasandole esto como cadena: "Este es el ejemplo que funciona"  
cadena = cadena.replace(/ /i, "-"); 
Da como resultado:  
Este-es%20el%20ejemplo%20que%20funciona 
Como vez, solo reemplaza la primera vez que aparece el " " (espacio) 
Lo recomendable para que te trabaje en la cadena completa es usar esta forma:  
cadena = cadena.split(" ").join("-"); 
que da como resultado:  
Este-es-el-ejemplo-que-funciona 
Espero que sirva!!!!! =) 
