朋友的一个面试题如下:
面试官问:写一个函数,使按钮点击触发的事件只生效一次???
你: 。。。【往下看】
方法1:
/**
方法1: 通过设置全局变量来控制
*/
var oBtn = document.getElementById('btn')
var isClick = false;
oBtn.onclick = function() {
if(isClick) {
} else {
//触发的函数体
console.log('111')
isClick = true;
}
}
方法2:
/**
方法2: 通过点击事件执行完,置空来控制
*/
oBtn.onclick = function() {
console.log('123')
oBtn.onclick = null;
}
方法3:
/**
方法3: 通过闭包fn来控制
*/
function once(fn) {
var result;
return function() {
if(fn) {
fn.apply(this, arguments)
fn = null;
}
}
}
var callOnce = once(function() {
console.log('js')
})
oBtn.onclick = callOnce;