关于setTimeout多次点击会多次执行的问题

为什么这里的 if 没有效果?

var n = 0
var flag = true

btn.onclick = function() {
    if (flag) {
        time = setInterval(add, 1000)
        flag = false
    }
}

function add() {
    n++
    flag = true
}

var n = 0
var flag = false

btn.onclick = function() {
if (flag) {
// 不执行后面的
return false
}
flag = true
time = setInterval(add, 1000)
}

function add() {
n++
flag = false
}

把add() 函数里的 flag = true 去掉