问答

小白来了!关于javascript的第二个问题?

作者:admin 2021-07-15 我要评论

var timer = setInterval(function(){ alert(1); },1000)/* 上面的代码在浏览器中会自动执行 *//* 下面的代码不会自动执行 */ var a = function(){ alert(2); } ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
   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。
第二个是定义了一个函数。

###

你看看MDN对setInterval的定义

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);
}

这段代码是声明一个函数

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 小白来了!关于javascript的第二个问题

    小白来了!关于javascript的第二个问题

  • js能跟踪到302跳转后的地址吗?

    js能跟踪到302跳转后的地址吗?

  • react的文件index。html怎么引入外部的

    react的文件index。html怎么引入外部的

  • viewer支持加载本地路径的模型吗?

    viewer支持加载本地路径的模型吗?

腾讯云代理商
海外云服务器