這期內容當中小編將會給大家?guī)碛嘘P如何在JavaScript中惰性載入函數(shù),文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)是專業(yè)的北流網(wǎng)站建設公司,北流接單;提供做網(wǎng)站、成都網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行北流網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!定義
惰性載入函數(shù)表示函數(shù)執(zhí)行的分支僅會發(fā)生一次,有兩種實現(xiàn)惰性載入函數(shù)的方式,第一種是在函數(shù)被調用時再處理,在第一次調用中,該函數(shù)會覆蓋為另外一個按合適方式執(zhí)行的函數(shù),這樣任何對函數(shù)的調用都不用再經(jīng)過執(zhí)行的分支了。第二種實現(xiàn)惰性載入的方式是在聲明函數(shù)時就制定適當?shù)暮瘮?shù),這樣,第一次調用函數(shù)時就不會損失性能了,而在代碼首次加載時會損失一點兒性能。
功能
由于現(xiàn)在瀏覽器之間的差異,為了實現(xiàn)跨瀏覽器工作,很多函數(shù)要書寫大量if語句或者try…catch…語句。當每次調用函數(shù)時,都要對每個if分支或try語句進行檢查,這樣會使得瀏覽器反應變慢。實際上,當我們用某個瀏覽器打開網(wǎng)頁時,就決定了某個if分支或try語句是可用的,沒有必要每次調用都檢查。為了解決以上問題,JavaScript中出現(xiàn)一種名為惰性載入的技巧。
示例
載入方式一
var flag = 1; function test1() { if(typeof flag === 'undefined') { test1 = function() { return 0; } } else if(flag === 1) { test1 = function() { return 1; } } else { test1 = function () { return -1; } } return test1(); }
這里if語句的每個分支都會為test1變量賦值,有效覆蓋了原有的函數(shù),最后一步便是調用新賦的函數(shù),下一次調用test1()的時候就會直接調用被分配的函數(shù),就不會再走if語句了,這樣就可以提高性能。
載入方式二
var flag = 1; var test2 = (function() { if(typeof flag === 'undefined') { return function() { return 0; } } else if(flag === 1) { return function () { return 1; } } else { return function () { return -1; } } })();
不同點是使用了立即執(zhí)行函數(shù),通過var來定義函數(shù),在每個if分支中return一個函數(shù)。
優(yōu)勢
惰性載入函數(shù)有兩個主要優(yōu)點,第一是顯而易見的效率問題,雖然在第一次執(zhí)行的時候函數(shù)會意味賦值而執(zhí)行的慢一些,但是后續(xù)的調用會因為避免的重復檢測更快;第二個是要執(zhí)行的適當代碼只有當實際調用函數(shù)是才執(zhí)行,很多JavaScript庫在在加載的時候就根據(jù)瀏覽器不同而執(zhí)行很多分支,把所有東西實現(xiàn)設置好,而惰性載入函數(shù)將計算延遲,不影響初始腳本的執(zhí)行時間。
JavaScript有什么特點1、js屬于一種解釋性腳本語言;2、在絕大多數(shù)瀏覽器的支持下,js可以在多種平臺下運行,擁有著跨平臺特性;3、js屬于一種弱類型腳本語言,對使用的數(shù)據(jù)類型未做出嚴格的要求,能夠進行類型轉換,簡單又容易上手;4、js語言安全性高,只能通過瀏覽器實現(xiàn)信息瀏覽或動態(tài)交互,從而有效地防止數(shù)據(jù)的丟失;5、基于對象的腳本語言,js不僅可以創(chuàng)建對象,也能使用現(xiàn)有的對象。
上述就是小編為大家分享的如何在JavaScript中惰性載入函數(shù)了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。