为什么下面这个函数调用返回的是 undefined?

百度笔试的一道题,感觉挺奇葩的:

下面这个函数调用返回的是对象:

function test(){
    return {a:1}
}

但是下面这个函数调用返回的却是 undefined

function test(){
  return 
  {
    a:1
  }
}
阅读 1.9k
2 个回答

因为js的自动补全功能,所以浏览器看到的实际是

function test(){
  return ;
  {
    a:1
  }
}

相反的还有

let a = []
[].map()

//或者
let a = []
(1).tofixed(2)

都是会报错的
虽然尤大推荐结尾不写分号https://www.zhihu.com/questio...,只需注意下特定几个模式,但我推荐还是写分号好,清晰

JavaScript的return语句中的一个设计的错误。

javascript有一个自动修复机制——在程序可能有缺陷的时候,自动插入分号补全

比如 :

return

{

}

javascript的自动补全会将上面代码变成:

return;

{

}

所以return;返回是undefined。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题