27
2020
07

下面两个函数的返回值是一样的吗?为什么?

function foo1()

{

  return {

      bar: "hello"

  };

}


function foo2()

{

  return

  {

      bar: "hello"

  };

}


在编程语言中,基本都是使用分号(;)将语句分隔开,这可以增加代码的可读性和整洁性。而在JS中,如若语句各占独立一行,通常可以省略语句间的分号(;),JS 解析器会根据能否正常编译来决定是否自动填充分号:


var test = 1 + 2;

console.log(test);  //3

在上述情况下,为了正确解析代码,就不会自动填充分号了,但是对于 return 、break、continue 等语句,如果后面紧跟换行,解析器一定会自动在后面填充分号(;),所以上面的第二个函数就变成了这样:



function foo2()

{

  return;

  {

      bar: "hello"

  };

}


所以第二个函数是返回 undefined。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。