zoukankan      html  css  js  c++  java
  • 几个例子弄懂JS 的setTimeout的运行方式

     
     
     
     
     
     
     
     
     
     
    function test() {
      var a = 1;
      setTimeout(function() {
        alert(a);
        a = 5;
      }, 1000);
    }
    test();
    alert(0);//前面的两个setTimeout延迟了 所以先执行这个

    结果:先弹出0,然后弹出1。

    例子2

     
     
     
     
     
     
     
     
     
     
     
    function test() {
      var a = 1;
      setTimeout(function() {
        alert(a);
        a = 5;
      }, 1000);
      lert(a);
    }
    test();
    alert(0);

     
    结果:先弹出1,然后弹出0,最后弹出1 。

    先执行test()里的alert(),因为function此时还未执行,因此,a任然为1.因为function还在被延迟着,因此,执行了alert(0),最后到时间了,执行了alert(a),因为前面a已经变为1了,所以,最后弹出的是1.

    例子:3:

     
    function test() {
      var a = 1;
      setTimeout(function() {
        alert(a);
        a = 5;
      }, 1000);
      a = 19;
    }
    test();
    alert(0);//前面的alert因为setTimeout延迟了 所以先执行这个。

    结果:会先弹出0,然后弹出19.

    延迟了function() {
    alert(a);
    a = 5;
    }

    但是a=19还是会照常执行,不是等到延迟结束。所以,执行这个被延迟函数的时候,a=19了!

    例子4

     
    function test() {
       var a = 1;
      setTimeout(function() {
        alert(a);
        a = 5;
      }, 1000);
      a = 19;
      setTimeout(function() {
        alert(a);
        a = 4;
      }, 3000);
     }
    test();
    alert(0);//前面的两个setTimeout延迟了 所以先执行这个


    结果:会先弹出0,然后弹出19,最后弹出5.

    附加解释下全局变量和局部变量!

    全局变量:在函数之外定义,或在函数内赋值但前面没加 var 关键字的,都是全局变量

    局部变量:定义在函数之内,且前面有 var 关键字的变量

  • 相关阅读:
    把程序的定义与实现部分用头文件与源文件分开
    简单控件的应用(二)—学生管理系统
    Java基础14
    创建插入符、输出不同效果的文字
    Java基础12
    简单控件的应用(一)—prj计算器
    简单的Win 32 Application
    最简单的音乐播放器
    消息处理初步
    基于MFC,在非客户区与客户区利用CButon类创建button
  • 原文地址:https://www.cnblogs.com/tanxiang6690/p/6834935.html
Copyright © 2011-2022 走看看