При привязке обработчиков событий я нашел необходимость создания функции, так как ей нужно будет ссылаться дважды; как только на начальном этапе, и один раз в случае связывания:Может ли анонимная функция javascript вернуть себя?
// Define function
function doSomething(){...}
// Call function initially
doSomething();
// Pass function as the event handler
$("#theElement").on("click", doSomething);
Но потом я понял, что я мог бы начать делать это, передавая самоосуществляющийся анонимную функцию в качестве обработчика событий и возвращение arguments.callee
:
// Much cleaner!
$("#theElement").on("click", (function(){
...
return arguments.callee;
})());
Предполагая что я никогда не использую эту функцию за пределами этих двух экземпляров, хорошо ли это делать?
Что легче понять и сохранить? Это должно быть вашей главной директивой. –
Оба в порядке. это зависит от тебя. как и что вам нужно. –
Ну, 'arguments.callee' устарел и запрещен в ECMAScript 5th Edition в Strict Mode, поэтому, вероятно, его следует поэтапно отключить. (Ссылки: [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee), который ссылается сюда, на: «[Почему были аргументы .callee.caller' устарело в JavaScript?] (http://stackoverflow.com/questions/103598/why-was-the-arguments-callee-caller-property-deprecated-in-javascript/235760#235760) ") –