Перегрузка функций в Javascript - лучшие практики

Я часто так делаю:

C#:

public string CatStrings(string p1)                  {return p1;}
public string CatStrings(string p1, int p2)          {return p1+p2.ToString();}
public string CatStrings(string p1, int p2, bool p3) {return p1+p2.ToString()+p3.ToString();}

CatStrings("one");        // result = one
CatStrings("one",2);      // result = one2
CatStrings("one",2,true); // result = one2true

Эквивалент javascript-execution JavaScript:

function CatStrings(p1, p2, p3)
{
  var s = p1;
  if(typeof p2 !== "undefined") {s += p2;}
  if(typeof p3 !== "undefined") {s += p3;}
  return s;
};

CatStrings("one");        // result = one
CatStrings("one",2);      // result = one2
CatStrings("one",2,true); // result = one2true

Этот конкретный function-overloading пример на самом деле более ecmascript элегантен в javascript, чем function-overloading в C#. Параметры, которые javascript-execution не указаны, в javascript overloading имеют значение undefined, которое overloading в выражении if принимает vanilla-javascript значение false. Однако определение javascript функции не передает информацию overload о том, что p2 и p3 являются javascript-library необязательными. Если вам vanillajs нужна большая перегрузка, jQuery vanillajs решил использовать объект vanilla-javascript в качестве параметра, например .js jQuery.ajax (options). Я function-overloading согласен с ними в том, что overloading это наиболее эффективный overload и четко документированный function-overloading подход к перегрузке, но мне overload редко требуется более одного javascript или двух быстрых необязательных method-overloading параметров.

РЕДАКТИРОВАТЬ: изменен vanillajs тест IF по предложению Яна

javascript

overloading

2022-11-18T20:05:00+00:00