setTimeout的一些细节

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setTimeout的一些细节相关的知识,希望对你有一定的参考价值。

定义和用法

setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

语法

setTimeout(code,millisec)

code 和 millisec 都是必填参数, code的写法有多种方式

 

提示

setTimeout() 只执行 code 一次

实例:

setTimeout(‘alert("hello wrold")‘, 1000) //hello wrold

实例:

setTimeout(‘console.log("hello wrold")‘, 1000) //hello wrold

实例:

setTimeout(‘document.querySelector("body").style.backgroundColor="red"‘, 1000); // 1秒过后页面的body标签会设置行间样式

实例:

function f() {
        alert(‘hello wrold‘)
    };
    setTimeout(‘f()‘, 1000)
    // 1秒之后输出 hello wrold

实例:

function f() {
        alert(‘hello wrold‘)
    };
    setTimeout(‘f‘, 1000);
    // 不会输出内容

实例:

function f(str) {
        alert(str)
    };
    setTimeout(‘f("hello wrold")‘, 1000)
    // 通过传递参数的方式1秒之后仍然能输出 hello wrold

实例:

function f(str) {
        alert(str)
    };

    setTimeout(‘f‘, 1000);
    setTimeout(‘f("hello wrold")‘, 2000);

    /*
     如果第一个定时器不传参数,而第二个定时器传递了参数, 实际上第一种写法定时器是不会输出内容的,但是也不影响第二个定时器输出内容     
    */  

    // 定时器的 code 和 millisec 都是必填参数,只要code存在,定时器就不会报错
    var x;
    setTimeout(‘x‘, 1000);
    setTimeout(‘alert("hello wrold")‘, 2000); //输出 hello world 而不会报错

    setTimeout(‘true‘, 1000);
    setTimeout(‘[]‘, 2000);
    setTimeout(‘{}‘, 3000);
    setTimeout(123, 4000);
    setTimeout(‘null‘, 4000);
    setTimeout(‘undefined‘, 5000);
    setTimeout(‘Symbol‘, 6000);
    setTimeout(‘alert("hello wrold")‘, 7000); // 输出 hello wrold

 

实例:

setTimeout(function() {
    alert(‘hello world‘);
}, 1000)

// 输出 hello wrold

实例:

var name = ‘wrold‘;
    var obj = {
        name: "hello",
        f:function(){
            setTimeout(function(){
                console.log(this);
                console.log(this.name)
            },1000)
        },
        f2: function(){
            setTimeout( () => {
            console.info(this);
            console.info(this.name)
            },1000)
        }
   };

 obj.f(); // window, wrold
 obj.f2(); // Object hello

 在使用setTimeout时如果用到了箭头函数请注意this的指向;
 因为setTimeout是window对象,所以它里面的this是指向window,而箭头函数会把this绑定到声明时的上下文,因此还是Object

实例:

// setTimeout() 时间参数设为0的运用
    
var fuc = [1,2,3];
for(var i in fuc){
  setTimeout(function(){console.log(fuc[i])},0);
  console.log(fuc[i]);
};

输入出结果为:

1

2

3

3

3

3

var name = ‘wrold‘;
    var obj = {
        name: "hello",
        f:function(){
            setTimeout(function(){
                console.log(this);
                console.log(this.name)
            },1000)
        },
        f2: function(){
            setTimeout( () => {
            console.info(this);
            console.info(this.name)
            },1000)
        }
   };

 obj.f(); // window, wrold
 obj.f2(); // Object hello

 在使用setTimeout时如果用到了箭头函数请注意this的指向;
 因为setTimeout是window对象,所以它里面的this是指向window,而箭头函数会把this绑定到声明时的上下文,因此还是Object

以上是关于setTimeout的一些细节的主要内容,如果未能解决你的问题,请参考以下文章

关于setTimeout的妙用

setTimeout

setTimeout中所执行函数中的this,永远指向window

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

如何让 Leanback 的详细信息片段不占用整个屏幕?

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?