Причина, по которой я говорю о языковой агностии c, заключается в том, что мне нужна небольшая автономная реализация, которая определяет, является ли самая внешняя область в строке, содержащей JavaScript, функцией или нет. Я посмотрел на MDN для руководства по возможным формам объявления функций, но, к сожалению, не смог найти исчерпывающих примеров для всех способов определения функций в JS.
Вот несколько различных тестовых случаев, которые реализация должна уметь обрабатывать:
// yes
function (){}
//yes
() => p
//yes
((g) => p)
//yes
(g => p)
//no
(()=>p)()).call()
//no
a = function (){
console.log()
{
//no
g=() => p
Я думал о попытке построить регулярное выражение для поиска этого, но я не уверен, что охватил все случаи, и я не нашел ни одного своего рода корпус примеров JS функций, или даже если бы подход с чистым регулярным выражением был бы лучшим способом справиться с этим.