var myFunc = function(x = getUndefined()){
    return x
};
function getUndefined(){
    return undefined
};

我想知道为什么这返回未定义而不是抛出某种错误。 x如何知道不继续调用getUndefined()

最佳答案

为了了解幕后发生的事情,您可以看一下这段代码如何向下移植到ES5:

"use strict";

var myFunc = function myFunc() {
    var x = arguments.length <= 0 || arguments[0] === undefined ? getUndefined() : arguments[0];

    return x;
};
function getUndefined() {
    return undefined;
};

仅当没有传递getUndefined的值时才调用x函数。

尽管ES6引擎可能不遵循这种精确策略,但很可能相当相似。

10-04 13:48