遞迴函式是在乙個函式通過名字呼叫自身情況下夠成的,如:
function factorial(num)else
}
這是一經典的遞迴階乘函式;表面這個函式是沒有什麼錯的,但在某種情況下會出錯:
var anothe***ctorial = factorial;
factorial = null;
alert(anothe***ctorial(4)
);//出錯
解決 的辦法是利用argumengts.callee,他是乙個指向正在執行的函式指標,可以利用他來實現對函式的遞迴呼叫:
function factorial(num)else
}
不過這種方法在嚴格模式下,不能通過指令碼訪問argumengts.callee,會丟擲錯誤;可以使用命名函式表示式來打成相同的結果:var factorial = (function f(num)else
});
這種方式在嚴格和非嚴格模式下都能執行!
《JS高階程式設計》之六
1 視窗位置。ie safari opera 和 chrome都提供了screenleft 和 screentop的屬性,firefox 用screenx 和 screeny safari 和 chrome也同時支援這兩個屬性 分別表示視窗相對於螢幕左邊和上邊的位置。在ie opera 和 chro...
《js高階程式設計》之惰性載入
不同瀏覽器之間存在相容性問題,當一段 需要詢問瀏覽器是否相容時,需要使用if語句,如果是個事件觸發函式,那麼每次呼叫都需要執行一遍if語句,使用惰性載入可以使if語句執行一遍。原來函式 function addeven else if element.atachevent 方法一 函式覆蓋 func...
《JS高階程式設計》之二
1 js的基本資料型別有 number string number null undefined boolean 還有一種複雜資料型別object,function 和 array 是object的一種派生型別。2 typeof 用來判斷給定變數的資料型別,undefined 這個值未定義 bool...