LinDaiDai/niubility-coding-js

☁️第4期第1题:following function return?

Opened this issue · 0 comments

following function return?

以下代码输出什么?

function getName () {
  return
  {
    name: 'LinDaiDai'
  }
}
console.log(getName())

这道题其实涉及到了JavaScript中的一个名为ASI的机制,全名Automatic Semicolon Insertion,好吧,不要整的那么高大上了,其实就是自动插入分号的机制。

按照ECMAScript标准,一些 特定语句(statement) 必须以分号结尾。分号代表这段语句的终止。但是有时候为了方便,这些分号是有可以省略的。这种情况下解释器会自己判断语句该在哪里终止。这种行为被叫做“自动插入分号”,简称ASI (Automatic Semicolon Insertion) 。实际上分号并没有真的被插入,这只是个便于解释的形象说法。

也就是说这道题在执行的时候,会在return关键字后面自动插入一个分号,所以这道题就相当于是这样:

function getName () {
  return;
  {
    name: 'LinDaiDai'
  }
}
console.log(getName())

因此最终的结果也就是undefined