Определение и вызов функции за один шаг

Есть ли в Javascript способ определить функцию и немедленно вызвать ее таким образом, чтобы она могла

Я знаю, что вы можете выполнять одноразовые анонимные функции:

(function(i) {
    var product = i * i;
    console.log(product);
    // Can't recurse here because there's no (ECMA standard) way for the 
    // function to refer to itself
}(2)); // logs 4

Или вы можете назвать функцию, а затем вызвать ее:

function powers(i) {
    var product = i * i;
    console.log(i * i);
    if (product < 1e6) { powers(product) };
}

powers(2); // Logs 4, 16, 256...

Но есть ли более чистый способ определения и вызова функции за один раз? Вроде как гибрид обоих примеров?

Невозможность сделать это не мешает мне что-либо делать, но мне кажется, что это был бы хороший выразительный способ написать рекурсивные функции или функции, которые нужно запускать на $ (document) .ready () , но также позже, когда ситуация изменится и т. Д.

49
задан hippietrail 24 October 2012 в 05:45
поделиться