<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>惰性函数</title>
</head>
<body>
<p id="test1">惰性函数1</p>
<p id="test2">惰性函数2</p>
<script>
// 只执行一次。不需要每次执行每次判断
// 防止全局污染
// var foo1 = (function() {
// var t;
// return function() {
// if (t) return t;
// t = new Date();
// return t;
// }
// })();
// 解决每次执行每次判断的问题
var foo = function() {
var t = new Date();
foo = function() {
return t;
};
return foo();
};
foo();
foo();
// DOM 事件添加中,为了兼容现代浏览器和 IE 浏览器,我们需要对浏览器环境进行一次判断: jq 部分源码
var addEvent = (function(){
if (window.addEventListener) {
return function (type, el, fn) {
el.addEventListener(type, fn, false);
}
}
else if(window.attachEvent){
return function (type, el, fn) {
el.attachEvent('on' + type, fn);
}
}
})();
// 兼容封装
addEvent('click',document.getElementById("test1"),function(){
alert(111)
})
addEvent('click',document.getElementById("test2"),function(){
alert(22)
})
</script>
</body>
</html>