<script>
//定义一个全局变量 是不首次,开始时是true,当你onMouseUp执行后变为false
var isFirst = true
function doS(){
if(isFirst){
doSth...//这里写你要做什么
isFirst = false
}
}
</script>
原因分析产生这个问题是因为我们对js函数理解不透彻导致的:
1,show():这样写表示函数执行后的结果
2,show:这样写表示函数的定义
因setInterval()要接收一个函数的定义而非结果,故改正为:
var add = (function () {
var counter = 0
return function () {counter += 1return counter}
})()
这个的意思,是把外面这个匿名函数的运行结果赋值给add,也就是说这个函数只在赋值的时候执行一次(这也意味着var counter = 0只执行了一次),以后调用add时,实际运行的就是里面的这个function () {counter += 1return counter}函数,所以couter不会归零,会继续累加下去。
你用console.log(add)把add打印到控制台就知道是怎么回事了: