JavaScript 在每個 Function 都維持了一個變數叫 arguments,可以取得 context 的有趣資訊。比如說,arguments.callee 可以拿到目前正在執行的這個 Function 的實體,這有什麼用呢?它可以用來自殺(?),以及實現匿名函式的遞迴。
以自殺來說,比方現在你註冊一個監聽函式,而你需要在某個條件達成後解除監聽,這就很有用了:
ele.addEventListener( 'click', function( e ) {
// blah blah ...
this.removeEventListener( 'click', arguments.callee, false );
// blah blah ...
}, false );
而遞迴就更有趣了,雖然應用上應該很少用到:
alert( ( function( n ) {
return ( n <= 1 ) ? n : n + arguments.callee( n - 1 );
} )( 100 ) );
以上會跳出 5050。
沒有留言:
張貼留言