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。
沒有留言:
張貼留言