201105072131利用自我執行 anonymous function 避免重覆運算
以 JavaScript 偵測瀏覽器是否支援 Flash 中的範例 isIOS 為例:
function isIOS() { var ua = navigator.userAgent; return ( ua.match(/iPad/i) || ua.match(/iPhone/i) || ua.match(/iPod/i) ) ? true : false; }
在同一個網頁中都不會改變,存成變數應該是比較好的選擇:
var isIOS = function() { var ua = navigator.userAgent; return ( ua.match(/iPad/i) || ua.match(/iPhone/i) || ua.match(/iPod/i) ) ? true : false; }();
如果要保持函式的形式,也可以改成這樣,讓判斷只做一次:
var isIOS = function() { var ua = navigator.userAgent, answer = ( ua.match(/iPad/i) || ua.match(/iPhone/i) || ua.match(/iPod/i) ) ? true : false; return function() { return answer; } }();
回應