Во-первых, забудьте о значении или ссылке и сосредоточьтесь на том, что здесь пропускается. По сути, в смысле прохода речь идет о передаче переменных функциям при их вызове.

function testFunction(arg1, arg2, ...) {
    /*
    Functionality
    */
}
testFunction(value1, value2, ...); //Passing variables while calling

В этом фрагменте кода мы вызываем функцию с параметрами (value1, value2, …) и можем использовать эти значения внутри функции в качестве аргументов (arg1, arg2, …), эта концепция >передача переменной. передача переменной бывает двух типов: передача по значению и передача по ссылке, в зависимости от изменения переменной внутренней функциональностью.

Передать по значению

При передаче по значению функция вызывается путем создания копии фактической переменной, поэтому изменение значения аргумента внутри функции не влияет на исходное значение переменной.

function testFunction(arg1) {
    arg1 = 5;             // changing the value of passed variable
    console.log('Inside function ' + arg1);       // arg1 = 5
}
let value1 = 10;
console.log('Before calling function ' + value1);    // value1 = 10
testFunction(value1);   // passing the parameter 10 to testFunction
console.log('After calling function ' + value1);     // value1 = 10

Вывод:

Before calling function 10
Inside function 5
After calling function 10

Поскольку arg1 является копией value1, значение1 не изменилось, когда мы изменили arg1.

В javaScript 6 различных типов данных передаются по значению при передаче в функцию. они называются примитивными значениями.

string, number, boolean, undefined, null,symbol

Пройти по ссылке

При передаче по ссылке функция вызывается с расположением переменной в памяти. Таким образом, любое изменение значения аргумента внутри функции напрямую влияет на исходное значение переменной.

function testFunction(arr) {
    for (let index = 0; index < arr.length; index++) {
        arr[index] += 1;
    }
    console.log('Inside function ' + arr);
}
let testArr = [1,2,3];
console.log('Before calling function ' + testArr);
testFunction(testArr);
console.log('After calling function ' + testArr);

Вывод

Before calling function 1,2,3
Inside function 2,3,4
After calling function 2,3,4

Здесь и arr, и testArr ссылаются на одну и ту же ячейку памяти, поэтому, если значения массива изменились из какой-либо из переменных, значение будет изменено навсегда для обеих из них.

В JavaScript 3 типа данных передаются по ссылке при передаче в функцию. Они называются эталонными значениями.

Object, array, function