Abstract-JavaScript är ett populärt språk för att utveckla webbapplikationer och används i allt högre grad för både klient- och serversidans applikationslogik. JavaScript-runtime är till sin natur händelsestyrd och callbacks är en viktig språkfunktion. Tyvärr framkallar callbacks ett icke-linjärt kontrollflöde och kan skjutas upp för att utföra asynkront, deklareras anonymt, och kan bo i godtyckliga nivåer. Alla dessa funktioner gör callbacks svåra att förstå och underhålla. Vi utför en empirisk studie för att karakterisera JavaScript callback-användning över en representativ corpus av 138 JavaScript-program, med över 5 miljoner rader JavaScript-kod. Vi finner att i genomsnitt varje tionde funktion definition kräver en callback argument, och att över 43% av alla callback-accepterande funktion callites är anonyma. Dessutom är majoriteten av callbacks inbäddade, mer än hälften av alla callbacks är asynkrona, och asynkrona callbacks, i genomsnitt, visas oftare i klient-side-kod (72%) än server-sida (55%). Vi studerar också tre välkända lösningar som är utformade för att hjälpa till med komplexiteten i samband med callbacks, inklusive felet första callback convention, Async.js bibliotek, och Promises. Våra resultat informerar om designen av framtida JavaScript-analys- och kodförståelseverktyg.
En annan empirisk studie gjordes för att analysera JavaScript callback användning som callbacks inducerar icke-linjärt kontrollflöde av program och kan orsaka asynkron körning REF.
Don't Call Us, We'll Call You: Characterizing Callbacks in Javascript
{'venue': '2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)', 'journal': '2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)', 'mag_field_of_study': ['Computer Science']}