setTimeout与setInterval参数之String

今天无意中给某网友解答了一些setTimeout的问题,发现一个有趣的东西。

以前我总认为setTimeout的第一个参数只能function,后面发现string也能执行。那问题来了,String做参数,使用的是哪个域?

    function trace(){
        console.log("out");
    }
    function test(){
        function trace(){
            console.log("in");
        }
        setInterval("trace()",1000);
    }
    test();


答案是window,不断的输出out,换成setTimeout也一样。

setInterval("window.trace()",1000);
setInterval("this.trace()",1000);
这两个呢?
原文地址:https://www.cnblogs.com/geilishu/p/5055372.html