Они эквивалентны, потому что в первой строке вводится анонимная функция, которая ничего не делает, кроме как направляет свой аргумент на callback
и возвращает возвращаемое значение callback
.
Вообще говоря, функция x
, которая ничего не делает, кроме пересылки своих аргументов какой-либо другой функции y
и возврата результата, может быть заменена внутренней функцией y
. x
не делает ничего значимого.
Итак, с учетом функции x
...
function x(arg) { return y(arg) }
Здесь мы определяем функцию x
. Цель x
- принять аргумент arg
и вызвать y(arg)
. Однако у нас уже есть средства для вызова y(arg)
, если у нас есть y
, и у нас есть arg
: , просто вызывая y(arg)
. Для этого нам не нужно вводить новую функцию x
.
Стоит отметить, что две строки в вашем вопросе эквивалентны только тогда, когда ajaxCall
вызывает свой обратный вызов с одним аргументом. Чтобы они были равны истинно , в первой строке должны быть указаны все аргументы:
ajaxCall(...json => callback(...json));