为什么返回类型相同但结果不同 [英] Why is same return type but result is difference

查看:116
本文介绍了为什么返回类型相同但结果不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Java脚本中有两个具有相同返回类型的函数,但是返回类型有所不同。

I have two function of same return type in java script but return type is difference. The using code of snipped id below

function foo1()
    {
      return {
          bar: "hello"
      };
    }

    function foo2()
    {
      return
      {
          bar: "hello"
      };
    }

调用该函数。

console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());

输出结果....

foo1 returns:
Object {bar: "hello"}
foo2 returns:
undefined 


推荐答案

这是因为JavaScript可以解释

That's because JavaScript interprets

return
{
    bar: "hello"
};

作为 return 语句,然后创建块(在运行时被忽略)。不作为返回对象。而且我真的不知道为什么JavaScript开发人员会做出这样的决定。

as return statement followed by block creation (which is ignored in runtime). Not as "return an object". And I really don't know why JavaScript devs made such decision.

Anyway ASI在<$ c之后插入; $ c> return 产生等效代码:

Anyway ASI inserts ; after return resulting in the equivalent code:

return;
{
    bar: "hello"
};

返回之后的换行符是元凶。如果您想退货,请不要使用它。

The newline after return is the culprit. Don't use it if you wish to return something.

这篇关于为什么返回类型相同但结果不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆