【问题标题】:How does ES6 function's default parameter return undefined, opposed to throwing an error?ES6 函数的默认参数如何返回 undefined,而不是抛出错误?
【发布时间】:2017-03-23 21:47:24
【问题描述】:
var myFunc = function(x = getUndefined()){
    return x
};
function getUndefined(){
    return undefined
};

我想知道为什么这会返回 undefined 而不是抛出某种错误。 x 怎么知道不要一直打电话给getUndefined()

【问题讨论】:

  • 它没有抛出错误,因为它是正确使用的有效语法。你觉得这里到底有什么奇怪的地方?
  • 为什么会一直调用getUndefined()?如果没有为参数提供值,则计算默认参数的表达式并将其传递给函数。
  • 我理解语法是正确的
  • 那么,有什么问题呢? :-S
  • 我认为由于某种原因这会导致对getUndefined()的无限循环调用

标签: javascript error-handling ecmascript-6


【解决方案1】:

要了解幕后发生的事情,您可以查看这段代码如何转换为 ES5:

"use strict";

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

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

只有在x 没有传递值时才会调用函数getUndefined

虽然 ES6 引擎可能不遵循这个确切的策略,但它很可能非常相似。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 2016-06-03
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2017-07-11
相关资源
最近更新 更多