在下面的javascript代码中,为什么输出未定义?

时间:2016-12-14 12:35:06

标签: javascript return-value settimeout

为什么' Hello World'字符串不打印到控制台?
我希望函数在计时器启动后返回值。

<script type="text/javascript">

    var obj = {
        first(){
            window.setTimeout(function(){
                return 'Hello World';
            }, 0)
        },

        second(){
            console.log(this.first());
        }
    }

    obj.second()

    </script>

1 个答案:

答案 0 :(得分:0)

它因为setTimeOut是异步的。 second()函数不等待setTimeOut的回调完成以返回值。你应该做点什么:

var obj = {
        first(){ var _this = this;
            window.setTimeout(function(){
                _this.second('Hello World');
            }, 0);
        },

        second(text){
            console.log(text);
        }
    }

    obj.first();