Когда функция вызывается как метод объекта (например, массив в этом примере), this
устанавливается для объекта, для которого вызывается метод.Я думаю, что это самая важная вещь, которую нужно отнять от этого ...
Другими словами, в документации просто говорится, что исходный объект, для которого вызывается concat
, не будет видоизменен, поскольку он concat
создает новый массив .Так что concat
является одной из немногих функций массива, которые не изменяют this
.Array.sort
/ Array.push
как уже упоминалось, мутирует контекст, в котором они вызываются.
Функции, которые не мутируют контекст, к которому они вызваны, или их аргументы в некоторых случаях предпочтительны, поскольку они невызывают какие-либо побочные эффекты.Они также называются pure
функциями, поскольку при заданном входе они всегда выдают один и тот же вывод при нулевых побочных эффектах.
Существует целый поднабор lodash, например, под названием lodash / fp посвящен идее чистых функций и функционального программирования из-за некоторых из этих преимуществ.Существует также Рамда и т. Д.
Надеюсь, это поможет.