在以下JavaScript代码中,为什么输出不确定



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

<script type="text/javascript">
    var obj = {
        first(){
            window.setTimeout(function(){
                return 'Hello World';
            }, 0)
        },
        second(){
            console.log(this.first());
        }
    }
    obj.second()
    </script>

这是因为setTimeOut是异步的。second()功能不等待setTimeOut的回调完成值。您应该做类似的事情:

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

最新更新