2013-08-22 3 views
1

myFunction이 function func에 할당되었지만 func도 할당 중에 실행되는 좀 더 우아한 방법이 있습니까?자바 함수를 동시에 할당하고 실행하십시오

var myFunction = (function(){ 
    var func = function(){ 
    console.log('hello world'); 
    }; 

    func(); 
    return func; 
})(); 

... 

myFunction(); 
+0

'return func(), func;'할 수 있지만'func'의 반복을 피할 방법이 없다고 생각합니다 (함수 자체에서'func'를 반환하지 않는 한). 그게 당신이 실제로 말하는거야. 그 중 어떤 기능을 의미하는지 명확히하십시오. –

+0

예 func의 반복에 대해 이야기하고 있습니다 – danbroooks

+0

식별자를 반복해도 문제가 없습니다. 그것들은 코드에서 무엇이 무엇인지를 알려주고, 반복하여 * 반환 된 것과 실행 된 것을 명확하게 해줍니다. 특히 식별자가 여러 줄을 차지하는 함수와 같은 것을 참조하면이 모든 것을 인라인으로 처리하면 코드를 정신 분석 할 수 있습니다. – millimoose

답변

3
var myFunction = (function func(){ 
    console.log('hello world'); 

    return func; 
})(); 

익명 기능의 이름을 지정할 수 있습니다. 이 이름은 함수 내부에서만 액세스 할 수 있습니다.

+0

이제 * 자체를 반환하는 함수가 있습니다. 그것은 무엇을 성취합니까? (당신이 할 수있는 것 이외에'myFunction()()()()()()()()') – Tomalak

+0

그것은 OP가 요구 한 것이다. 몰라, 당신은'myFunction()()();'처럼 연결할 수있다. 그러나 물론 그것은 다른 접근법으로도 달성 될 수 있습니다. –

0

핵심 문은 내가이 더 우아한 될 수 표시되지 않습니다이

var <name> = (<functionExpression>)(); 

입니다.

+1

이것은 함수의 반환 값을 변수에 할당합니다. – millimoose

+0

@millimoose 예. OP의 코드가 정확히 무엇을하는지. Hell, 그것은 과제입니다.이 표현식의 결과 (이 경우 IIFE)를 변수에 할당합니다. ;-) – Tomalak

+0

아, 맞아. 나는 그가 내적 기능을 의미한다고 생각했다. – millimoose

0

할당 표현식은 지정된 값을 반환하지만, 여전히 식별자 반복해야하므로 별도로 변수를 선언해야한다 : 나는 동료에서이 코드를 본다면 말했다

var outer; 
(outer = function() { 
    var inner; 
    return (inner = function() { 
     print('hello world'); 
    })(), inner; 
})(); 

outer(); 

내가 그를 whap 것을 겹쳐서 신문과.

관련 문제