2016-05-19 48 views
0

的我得到了閉合的工作,但我想要做的是,如果我能擺脫圓括號:試圖擺脫自執行括號

window.obj = {} 
 
obj.method = (function() { 
 
\t var closure 
 

 
\t return function(value) { 
 
\t \t if (arguments.length) { 
 
\t \t \t closure = value 
 
\t \t } else { 
 
\t \t \t return closure 
 
\t \t } 
 
\t } 
 
})(); 
 

 
obj.method(3.14) 
 
$('body').append(obj.method())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Q :有沒有辦法擺脫領先(和尾隨)()?

+0

'obj.method =函數(值){ \t \t如果(的arguments.length){ \t \t \t閉合=值 \t \t}否則{ \t \t \t返回關閉 \t \t} \t}' – Rayon

+0

謝謝Rayon!但函數必須執行以使閉包生效。 –

+0

-Philip,我只是認爲'closure'變量爲未定義。在其他情況下,你需要立即執行函數表達式... – Rayon

回答

0

window.obj = {} 
 
obj.init = function() { 
 
    var closure 
 
    return result 
 
    function result(value) { 
 
     if (arguments.length) { 
 
     closure = value 
 
     } else { 
 
     return closure 
 
     } 
 
    } 
 
} 
 
obj.method = obj.init() 
 
obj.method(Math.PI) 
 
document.getElementById('output').innerHTML = obj.method()
<div id="output"></div>

+1

你所做的無非就是從移動括號在函數調用obj.init()之後。 –