《js高階程式設計》之惰性載入

2021-08-27 23:44:49 字數 1055 閱讀 9732

不同瀏覽器之間存在相容性問題,當一段**需要詢問瀏覽器是否相容時,需要使用if語句,如果是個事件觸發函式,那麼每次呼叫都需要執行一遍if語句,使用惰性載入可以使if語句執行一遍。

原來函式:

function  addeven()else if(element.atachevent)

方法一:函式覆蓋;

function  addeven()}else if(typeof attachevent=="function")

也就是說,第一次判斷if條件的時候直接將函式的程式覆蓋了,後面直接執行被改變的函式內容,沒有判斷語句了;

方法二:

var  addevent=(function();

}else if(element.attachevent);

}) ()

方法二可能有小夥伴看不太懂:(function(){}) ()這種格式是什麼狗東西??,下面講一下:

對於函式的宣告有很多方式,下面看看:

方式一:

function  a();

這種宣告,在函式的前後都可以呼叫,因為js直譯器會提前編譯,即使在函式宣告前呼叫也能找到函式;

方式二:

var  a=function();

這種是函式表示式,即將函式賦給a,這種函式不能夠在函式宣告前被呼叫,因為js直譯器在遇到這一句的時候才會編譯。

方式三:

var a =function() ();

在函式表示式後面直接加(),瀏覽器會直接把它看作表示式,紅色括號內是形參,綠色括號內是實參,傳入實參直接執行計算出函式的值,把這個值賦給a變數;

例子一:

var   a =function(i )  (6);

console.log (a);  // 6

例子二:

var  a=(function()) 

();執行粉色括號時,向瀏覽器返回乙個未命名的函式,遇到藍色括號時,立即執行返回的未命名函式,就是說,不加藍色括號的時候,a的值是乙個函式,加了藍色括號後,(function()) 

() 成為了乙個表示式,所以a是個數; 粉色括號可加可不加;

《JS高階程式設計》之六

1 視窗位置。ie safari opera 和 chrome都提供了screenleft 和 screentop的屬性,firefox 用screenx 和 screeny safari 和 chrome也同時支援這兩個屬性 分別表示視窗相對於螢幕左邊和上邊的位置。在ie opera 和 chro...

一 js高階程式設計之 遞迴

遞迴函式是在乙個函式通過名字呼叫自身情況下夠成的,如 function factorial num else 這是一經典的遞迴階乘函式 表面這個函式是沒有什麼錯的,但在某種情況下會出錯 var anothe ctorial factorial factorial null alert anothe ...

《JS高階程式設計》之二

1 js的基本資料型別有 number string number null undefined boolean 還有一種複雜資料型別object,function 和 array 是object的一種派生型別。2 typeof 用來判斷給定變數的資料型別,undefined 這個值未定義 bool...