【问题标题】:Javascript function: no return statement identical to return undefined? [duplicate]Javascript函数:没有与返回未定义相同的返回语句? [复制]
【发布时间】:2018-12-06 03:26:32
【问题描述】:
var f1 = () => {
    return undefined;
};

var f2 = () => {
};

var a = f1(); // undefined
var b = f2(); // undefined

我知道结果,但我想更深入地了解。这是否意味着在 Javascript 函数中,没有与 return undefined 相同的 return 语句?

【问题讨论】:

  • 嗯,没有返回值。您如何调用尚未定义的返回值? :)
  • 是的。 ... ...
  • 每个表达式都会产生一个值,否则就是一个语句。函数调用是一个表达式。 “无值”的值为undefined
  • @deceze 什么是语句和表达式
  • 声明类似于for (...);您只能单独使用它,它不会产生值。表达式是产生值的东西,可以用作更大的表达式或语句的一部分。

标签: javascript


【解决方案1】:

我知道结果,但我想更深入地了解。这是否意味着在 Javascript 函数中,没有与 return undefined 相同的 return 语句?

生效,是的。该规范区分了这两者,但从实用的角度来看,调用一个“落到尽头”、return;return undefined; 的函数在调用结果方面都具有完全相同的最终结果:@ 987654326@.

my answer to the dupetarget (我应该已经意识到了!)我解释了规范如何区分它们,但同样,这只是规范的区别,不是你可以在实际代码中观察到的。

【讨论】:

    【解决方案2】:

    视情况而定。

    对于不用作实例的函数,默认返回值为undefined

    对于使用new 调用的构造函数,它默认返回this 对象。

    来源:

    【讨论】:

      【解决方案3】:

      如果没有返回,返回值将是undefined 基本上和返回是一样的; (没有值)因为函数在完成时将“返回”(有关返回信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

      如果你初始化一个函数(更像是一个类),那么返回的值将是这个函数的实例。

      【讨论】:

        猜你喜欢
        • 2011-10-26
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 2016-06-01
        相关资源
        最近更新 更多