一 js高階程式設計之 遞迴

2021-06-28 12:08:55 字數 700 閱讀 6353

遞迴函式是在乙個函式通過名字呼叫自身情況下夠成的,如:

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...