Изменение массива в функции JavaScript меняет массив вне функции?
Почему два сценария ведут себя по-разному? Я хочу использовать первый скрипт, но во второмdrawData()
называть это изменениямиdata
; это странно, а не то, чего я хочу. Второй скрипт не имеет этой проблемы. Почему так, и как я могу исправить первый скрипт?
Первый скрипт не меняетсяdata
:
var data = ["right"];
function drawData(arrs, type) {
if (type == "percentage") {
arrs[0] = "omg";
}
alert(data[0]); // Changed!?
}
drawData(data);
drawData(data, "percentage");
Второй скрипт:
var data = "right";
function drawData(arrs, type) {
if (type == "percentage") {
arrs = "omg";
}
alert(data); // OK, not changed.
}
drawData(data);
drawData(data, "percentage");