惰性函数#

惰性函数


就是很懒,不知道自己的作用,它的作用由第一次的执行来决定

例子:

function fn(type) {
            if (type == 1) {
                fn = function () {
                    console.log(1);
                }
                //返回后调用fn(type)=fn()
            } else if (type == 2) {
                fn = function () {
                    console.log(2);
                }
            }
            return fn(type);
        }
        fn(1);
        fn(2);
        //输出结果 1,1 不管之后怎么弄都是1 第一次执行的时候函数就被调换了

下面看下事件处理兼容的例子

第一个

     if (typeof el.addEventListener === 'function') {
                affEvent = function (el, type, fn) {
                    el.addEventListener(type, fn)
                }
            }
            else {
                addEvent = function (el, type, fn) {
                    el.attachEvent('on' + type, fn);
                }
            }
            return addEvent(el, type, fn);

第二个


        function addEvent(el, type, fn) {
            if (typeof el.addEventListener === 'function') {
                affEvent = function (el, type, fn) {
                    el.addEventListener(type, fn)
                }
            }
            else {
                addEvent = function (el, type, fn) {
                    el.attachEvent('on' + type, fn);
                }
            }
            return addEvent(el, type, fn);
        }

正常来说第一个,去兼容的话,不管到哪个浏览器是否都需要执行两次,去判断。
而第二个代码就是不一样,确定了第一次执行的浏览器是哪种兼容,之后就一直都是这个,不会在去兼容别的。
相比较第一个,第二个更加的优化了代码的执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值