var timer = setInterval(function(){
alert(1);
},1000)
/* 上面的代码在浏览器中会自动执行 */
/* 下面的代码不会自动执行 */
var a = function(){
alert(2);
}
同样是用变量来保存(不知道这种说法对不对),为啥上面的会自动执行,下面的不会呢?
### setInterval 这个东西叫循环定时器,
function(){ alert(1); } 叫函数声明
你纠结的是 2个地方都声明了一个函数,但是第一个执行了
可以这么理解,定时器相当于一个碎纸机,每次都要拿一张纸来碎掉,你的
function(){
alert(1);
}就是声明了一张纸给碎纸机,所以碎纸机把它碎掉了,结果就是alert(1)
而
var a = function(){
alert(2);
}
意思就是,你好我是一张纸,我叫a,你要是把我碎掉了(没有送给碎纸机就不会被碎掉),我能alert(2)
不知道好不好理解...
###
> var timer = setInterval(function(){
alert(1);
}, 1000)
> typeof timer
< "number"
> var a = function(){
alert(2);
}
> typeof a
< "function"
解释:
第一个setInterval
是一个函数,第一个是将函数值赋值给了timer。
第二个是定义了一个函数。
WindowOrWorkerGlobalScope
?的?setInterval()
?方法重复调用一个函数或执行一个代码段,在每次调用之间具有固定的时间延迟。
所以你定义的timer的值就是setInterval执行后的返回值,timer的类型是number。
然后下面的a的值,仅仅是一个匿名函数,当然不会自动执行啦。
###设置了setInterval
会自动执行,通过函数表达式定义的函数得手动执行
setInterval
是个函数,第一个是将函数执行结果赋值给time,第二个是将函数本身赋值给a,要想第二个也执行,可以写成iife。如下
var a = (function(){
alert(2);
})()
###
var timer = setInterval(function(){
alert(1);
},1000)
setInterval 是一个函数,setInterval()是执行setInterval函数,而alert(1)是在setInterval函数中执行的内容。
var a = function(){
alert(2);
}
这段代码是声明一个函数