如何让JS函数只执行一次

JavaScript012

如何让JS函数只执行一次,第1张

<div onMouseUp="doS()" ></div>

<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打印到控制台就知道是怎么回事了: