Подобно C/C++/Java, мы можем передать весь массив в качестве параметра функции в JavaScript. Этот метод передачи массива называется вызовом по ссылке в JavaScript.
Чтобы передать аргумент массива в функцию, просто передайте имя массива (ссылку на массив) без скобок.
Например, если мы объявили массив меток как:
let hourlyTemp = new Array(30);
затем оператор вызова функции:
modifyArray(hourlyTemp);
передает массив hourlyTemp в функцию modifyArray(). JavaScript автоматически передает массивы в функции с помощью вызова по ссылке (или передается по ссылке).
Функция получения массива через вызов функции
Чтобы функция могла получить массив через вызов функции, необходимо указать параметр в списке параметров функции, который будет ссылаться на массив в теле функции.
В отличие от других языков программирования, JavaScript не передает никакого конкретного синтаксиса для этой цели. JavaScript просто нужно, чтобы имя массива было указано в списке параметров функции.
Например, мы можем записать определение функции modifyArray следующим образом:
function modifyArray(x)
Приведенное выше определение функции указывает, что modifyArray() получает массив целых чисел в параметре x (аргумент, предоставленный в вызывающей функции, должен быть массивом).
Когда вызываемая функция использует имя массива x, она указывает на исходный массив в вызывающей функции (массив hourlyTemp).
Таким образом, когда вызываемая функция обновляет какие-либо элементы массива в теле своей функции, она обновляет фактические элементы массива в их исходных ячейках памяти.
Передача массива в функцию как передача по ссылке
Давайте создадим программу JavaScript, в которой мы передадим инициализированный массив в функцию. Затем мы умножим каждый элемент массива на 5 и выведем его на экран.
Пример 1:
<script>
let nums = new Array(20, 10, 25, 15, 35, 40);
let arrayLength = nums.length;
document.write("Original array elements are: ", "<br/>");
for(i = 0; i < arrayLength; i++) {
document.write(nums[i]+ " ");
}
document.write("<hr>");
// Function to pass an array by reference.
function modifyArray(x) {
document.write("Modified array elements: ", "<br/>");
for(i = 0; i < arrayLength; i++) {
document.write(nums[i] * 5+" ");
}
}
// Calling function by passing array.
modifyArray(nums); // entire array passed by reference.
</script>
Output: Original array elements are: 20 10 25 15 35 40 Modified array elements: 100 50 125 75 175 200
В этом примере программы мы передали массив nums в modifyArray() как передачу по ссылке. То есть параметр nums передается в функцию modifyArray() со ссылкой на x. Внутри функции элементы массива умножаются на 5 и отображаются.
Пример 2:
<script>
let nums = [10, 20, 30, 40, 50];
let arrayLength = nums.length;
document.write("Original array elements are: ", "<br/>");
for(i = 0; i < arrayLength; i++) {
document.write(nums[i]+ " ");
}
document.write("<br/>");
// Function to pass an array by reference.
function modifyArray(newArray, len) {
document.write("Modified array elements are: ", "<br/>");
for(i = 0; i < len; i++) {
document.write(nums[i] * 2+" ");
}
}
// Calling function by passing array and array length.
modifyArray(nums, arrayLength); // entire array passed by reference.
</script>
Output: Original array elements are: 10 20 30 40 50 Modified array elements are: 20 40 60 80 100
Передача отдельного элемента массива в функцию как передача по значению
Давайте создадим программу JavaScript, в которой мы передадим весь массив как передачу по ссылке в функцию в JavaScript. Затем мы передадим отдельный элемент массива в функцию как передачу по значению в JavaScript.
Пример 3:
<script>
let nums = [10, 20, 30, 40, 50];
document.write("Original array: ", "<br/>");
for(i = 0; i < nums.length; i++)
document.write(nums[i]+ " ");
document.write("<br/>");
document.write("Modified array: ", "<br/>");
// Create a function that modifies elements of an array.
function modifyArray(newArray) {
for(j = 0; j < nums.length; j++)
document.write((newArray[j] *= 4)+ " ");
}
modifyArray(nums); // passing an array as passed by reference.
document.write("<br/>");
document.write("nums[3] before modifyElement: " +nums[3], "<br/>");
// Create a function that modifies the value passed.
function modifyElement(e) {
e *= 3;
document.write("nums[3] after modifyElement: " +e);
}
modifyElement(nums[3]); // passing array element nums[3] as passed by value.
</script>
Output: Original array: 10 20 30 40 50 Modified array: 40 80 120 160 200 nums[3] before modifyElement: 160 nums[3] after modifyElement: 480
Хотя весь массив передается по ссылке, отдельные числовые и логические элементы массива передаются по значению.
Чтобы передать элемент массива в функцию, используйте в качестве значения аргумента при вызове функции имя элемента с подстрочным индексом.
В этом уроке вы изучили интересную тему «передача массива в функцию в JavaScript» со множеством примеров программ. Надеюсь, вы поняли, как передать отдельный элемент массива в JavaScript.