js随笔记

一、关于自执行函数

当function需要进行多次判断去执行不一样的代码,而这个判断又是固定的,比如浏览器是否支持此操作,或者要兼容手机端和pc端,然后手机端和pc端分别要执行不一样的逻辑,就可以在定义function的时候,先确定当前环境是手机端还是pc端,然后return成相应的函数,这个时候就可以用自执行函数,例如下面的代码

export const on = function (element, event, handler) {
  if (element && event && handler) {
    if (document.addEventListener) {
      element.addEventListener(event, handler, false)
    }
    else {
      element.attachEvent('on' + event, handler)
    }
  }
}

如果这么写的话,每次调用on()的时候都会进行一次if (document.addEventListener)的判断,所以可以采用自执行函数改成如下代码

export const on = (function () {
  if (document.addEventListener) {
    return function (element, event, handler) {
      if (element && event && handler) {
        element.addEventListener(event, handler, false)
      }
    }
  } else {
    return function (element, event, handler) {
      if (element && event && handler) {
        element.attachEvent('on' + event, handler)
      }
    }
  }
})()

这样在定义on的时候就已经确定了浏览器支持哪种方法,调用的时候就不会再进行判断了

posted @ 2021-08-26 16:20  咬轮猫  阅读(34)  评论(0)    收藏  举报
Live2D