Recentemente, eu estava examinando o promisify-node para ver como o autor conseguiu converter funções e objetos básicos em uma API baseada em promessas. Percebi rapidamente que eles estavam lendo assinaturas de funções para procurar nomes de argumentos de callback comuns, como callback e cb. A estratégia parecia estranha, mas provavelmente necessária.


Reservei alguns minutos para escolher a função JavaScript que analisava os nomes dos argumentos de uma função e aqui está ela:



function getArgs(func) {
  // First match everything inside the function argument parens.
  var args = func.toString().match(/function\s.*?\(([^)]*)\)/)[1];
 
  // Split the arguments string into an array comma delimited.
  return args.split(',').map(function(arg) {
    // Ensure no inline comments are parsed and trim the whitespace.
    return arg.replace(/\/\*.*\*\//, '').trim();
  }).filter(function(arg) {
    // Ensure no undefined values are added.
    return arg;
  });
}


Portanto, considerando a função acima e uma função de exemplo, veja como ela funcionaria:



function myCustomFn(arg1, arg2,arg3) {
  
}

console.log(getArgs(myCustomFn)); // ["arg1", "arg2", "arg3"]


As expressões regulares não são uma coisa linda? Não posso citar muitos usos para essa função, mas aqui está ela se o senhor quiser fazer isso!

  • Detectar inserções de nós do DOM com animações JavaScript e CSS
  • Animações CSS entre consultas de mídia

    As animações CSS estão no mesmo patamar do pão fatiado. As animações CSS são eficientes porque podem ser aceleradas por hardware, não exigem sobrecarga de JavaScript e são compostas por pouquíssimo código CSS. Muitas vezes, adicionamos transformações de CSS a elementos por meio de CSS durante…