¿Cambiar la matriz en la función de JavaScript cambia la matriz fuera de la función?

¿Por qué los dos guiones se comportan de manera diferente? Quiero usar el primer script, pero en el segundodrawData() llamalo cambiosdata; Es raro y no es lo que quiero que pase. El segundo script no tiene este problema. ¿Por qué es así y cómo puedo arreglar el primer script?

El primer guión no cambiadata:

var data = ["right"];

function drawData(arrs, type) {
    if (type == "percentage") {
        arrs[0] = "omg";
    }
    alert(data[0]); // Changed!?
}
drawData(data);
drawData(data, "percentage");

Segundo guión:

var data = "right";

function drawData(arrs, type) {
    if (type == "percentage") {
        arrs = "omg";
    }
    alert(data); // OK, not changed.
}
drawData(data);
drawData(data, "percentage");

Respuestas a la pregunta(2)

Su respuesta a la pregunta