繁体   English   中英

为什么foo2()在这里返回undefined?

[英]why does foo2() return undefined here?

为什么我在js中以下两个函数中没有得到相同的输出。

    foo1 (){
    return {
        bar:"hello" 
      };
    }
    foo2 (){
      return
      {
        bar:"hello"
      };
    }
    console.log("foo1 returns:");
    console.log(foo1());
    console.log("foo2 returns:");
    console.log(foo2());

原因是JS中的可选分号。

JS这样对待您的代码:

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

JS中的许多分号是可选的。 有时这是一个优势(例如,参见代码打高尔夫球)。 但是在像您这样的其他情况下,这会导致意外错误。

foo1()您有一个{在返回之后的开头,因此解析器将首先尝试查找相应的结尾} 但是,在foo2() ,解析器没有理由猜测,应该解析更多内容,因此它仅插入(可选)分号并按原样运行代码。 下一行中的对象是完全(语法上)有效的代码-没有理由隐式更改任何内容。

检查一下

function foo1() {
   return {
     bar: "hello"
   };
 }
 function foo2() {
   return {
     bar: "hello"
   };
 }
 console.log("foo1 returns:");
 console.log(foo1());
 console.log("foo2 returns:");
 console.log(foo2());

工作?

如果是函数,请告诉它它是函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM