Я все время использую оба способа, не слишком задумываясь о том, что лучше.И я считаю, что с точки зрения производительности, если вы беспокоитесь о времени загрузки или разбора мобильного устройства, то в конечном итоге вы будете использовать JS Minifier (или, возможно, Google's Закрывающий компилятор ).
В любом случае, у меня есть критерии, которые кажутся мне полезными, чтобы решить, должна ли функция быть анонимной или нет:
Если бы у меня было действительно хорошее имя для функции, то оно не должно быть анонимным
Я имею в виду, что если ваша функция будет иметь имя onSetupReady
, то функция не объясняет, что она делает, вместо этогоего имя определяет, где его следует использовать (и это обычно будет единственное место, которое будет вызывать эту функцию).Так что, если это так, то вы можете сделать функцию анонимной или нет.Я обычно выбираю анонимный.
Но, если ваши функции выполняют только одну вещь, и эта вещь не совсем очевидна, и у вас возникает соблазн поместить однострочный комментарий в первой строке функции (или что-то еще)) объяснить, что он делает.тогда я не буду этого делать, и я выберу хорошее имя для этой функции.И я еще больше подчеркиваю это правило, когда событие, которое вызывает эту функцию, не очевидно для этой функции.Примеры:
Аноним OK
Ext.Window({
listernes: {
beforeclose: function() { // This function has only one purpose and
Ext.Msg.show({ // can be named, but I think it's OK. Because
title:'Close?', // it is really easy to see what it does.
msg: 'Are you sure?',
fn: function(btn) {
if (btn === 'cancel') {
return false;
}
},
animEl: 'elId',
icon: Ext.MessageBox.QUESTION
});
}
}
}).show();
Аноним НЕ рекомендуется
var insertExtraToolbar = function() {
var containerNbar = theGrid.getBottomToolbar().getEl().parent().dom;
theGrid.elements += ',nbar';
theGrid.createElement('nbar', containerNbar);
};
theGrid.on('render', insertExtraToolbar);