导致setTimeout中代码和fnc之间的差异的原因

时间:2016-07-31 11:43:51

标签: javascript settimeout

根据MDN

public func +<K, V>(lhs: [K:V], rhs: [K:V]) -> [K:V] {
    var lhs: [K:V] = lhs
    for (key, value) in rhs {
        lhs[key] = value
    }
    return lhs
}

let array = ["x=5", "y=7", "z=10"]
let dictionary = array.map({ $0.componentsSeparatedByString("=") }).reduce([:]) { $0 + [$1[0]: $1[1]] }

print(dictionary) // ["y": "7", "x": "5", "z": "10"]

你可以看到:

var timeoutID = window.setTimeout(func, [delay, param1, param2, ...]);
var timeoutID = window.setTimeout(code, [delay]);

结果是'1'然后是'2'。

 setTimeout(function() {
            alert(2);
        }, 0);
        alert(1);
然而,结果是'2'然后是'1'。

导致差异的原因是什么?

1 个答案:

答案 0 :(得分:1)

的情况下
setTimeout(alert(2), 0);
alert(1);

执行第一个alert(2)并将其返回值(即undefined)传递给setTimeout函数,而在第一个示例中,函数传递给setTimeout函数

另请参阅:Why is setTimeout(fn, 0) sometimes useful?