Я слышал, что имена ваших анонимных функций помогают при отладке.Хорошая практика - назвать метод свойства объектов в JavaScript?
JQuery:
$("p").on("click", function clickHndlr() {
/* body...*/
});
Узел
var EventEmitter = require('events').EventEmitter,
emitter = new events.EventEmitter();
emitter.on('customEvent', function customEventHndlr (message, status) {
/* body...*/
});
Vanilla JS:
button.addEventListener('keypress', function buttonHndlr() {
/* body...*/
});
Но что об объекте?
var starShipChecker = (function() {
var publicAPI = {
checkForWarpDrive : function(starShip){
if(!starShip.hasOwnProperty('warpDrive')) {
starShip.warpDrive = undefined;
console.log('Your star-ship, the ' + starShip.name + ', now has warp-drive!' +
'\n' + 'Use the addWarpDrive method to apply the maximum warp relevant to your ship Class...');
} else {
console.log('Your star-ship, the ' + starShip.name + ', has warp-drive already!' +
'\n' + 'But use the addWarpDriveMaxLevel method to apply the maximum warp relevant to your ship Class...');
}
},
addWarpDriveMaxLevel : function(){}
};
return publicAPI;
})();
Вы получите такую же выгоду? Или это другое, потому что это методы?
checkForWarpDrive : function checkWarpDriveLikeYouWereScotty(starShip){ /* body...*/},
addWarpDriveMaxLevel : function addWarpDriveLikeYouWereScotty(){ /* body...*/}
То же самое. Когда вы смотрите на трассировку стека, есть хороший шанс, что он просто скажет что-то вроде «анонимной функции», если вы не дадите ему имя. Назовите ли вы все свои функции, чтобы вы могли видеть, что их имена в трассировке стека зависят от вас. Некоторые люди, некоторые люди этого не делают. –
Ну, если анонимная функция имеет имя, это уже не анонимность, не так ли? – Feathercrown
Я бы сказал, что польза исчезла, поскольку методы не являются, в конце концов, анонимными. –