javascript高级 --- 惰性函数

一、介绍

惰性函数表示在函数执行的过程中,函数会在首次被成功调用的时候覆盖当前函数,成功后的逻辑不会被执行。

二、案例

因为浏览器行为之间的差异,我们在处理一些差异的同时,必须考虑其兼容性问题,例如:addEventListener 、removeEventListener、event、preventDefault、stopPropagation 等等,此时我们就需要根据当前的浏览器环境执行对应的if条件语句,实现兼容适配

比如,最常见的获取事件对象

function getEvent(event) {
	let e
	if (event) {
		e = event
	}else if (window.event) {
		e = window.event
	}else {
		e = arguments.callee.caller.arguments[0]
	}
	return e
}

每次调用getEvent时,会根据当前浏览器支持的能力进行检查
这个过程,会执行每一个if语句,如果浏览器支持一种方法,那之后的方法必然会支持,也就是说,之后的if语句也就没必要再执行,代码还可以运行的更快一些,

*解决方案:惰性函数

三、函数重写

惰性函数

function getEvent(event) {
	let e
	if (event) {
		e = event
		getEvent = function (event) {
			return event
		}
	}else if (window.event) {
		e = window.event
		getEvent = function (event) {
			return window.event
		}
	}else {
		e = arguments.callee.caller.arguments[0]
		getEvent = function (event) {
			return arguments.callee.caller.arguments[0]
		}
	}
	return e
}

函数在第一次执行过程中,如果条件成立,那新的函数会覆盖原函数,下一次函数在执行时,会直接调用新赋值的函数,也就不再执行后面的if语句了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章