题1 (块级作用域, Reference)
下面输出的是
答案:ReferenceError
这道题主要考察:
- const和let 声明的变量是具有块级作用域的,块是大括号({})之间的任何东西,由于块级作用域,我们无法在声明的块之外引入变量
- 这道题有个注意的是,因为是块级作用域,没有变量提升,调用未声明的变量并不会反悔undefined,而是报Reference错误
- ReferenceError(引用错误) 对象代表当一个不存在的变量被引用时发生的错误。
题2 (扩展符,箭头函数)
下面输出的是
答案:[1, [2, 3, 4]] , undefined
这道题主要考察:
- 扩展符,这里y使用了扩展符,代表序列,也就是2,3,4, 所以getList的返回值是[1, [2, 3, 4]]
- 对于箭头函数,如果只返回一个值,我们不必写花括号,但是如果想要从一个箭头函数返回一个对象,必须在圆括号中编写它,不然就不会返回任何值,例如:
题3 (JSON.stringify)
下面输出的是
答案:“{“level”: 19, “health”: 90}"
这道题主要考察:
- JSON.stringify的第二个参数是替代者,替代者可以是个函数或数组,用以控制哪些值如何被转换为字符串,如果替代者是个数组,那么就只有包含在数组的属性将会被转化为字符串。如果替代者是一个函数,这个函数将被对象的每个属性都调用一遍。函数返回的值将会成为这个属性的值
题4(Boolean)
下面输出的是:
答案:{} “” []
这道题主要考察:
- js中的假值只有6个,false,undefined,null,0,""(空字符串),NaN。除此之外的所有值,都是“真值”,即在逻辑判断中可以当true来使用
题6 (模版字符串)
下面输出的是:
答案:Hi there, undefined
这道题主要考察:
- undefined和字符串拼接的时候,会加上undefined被打印
题8 (暂时性死区)
下面输出的是:
答案:ReferenceError
这道题主要考察:
- 带let关键字和const关键字的变量不存在变量提升,与var不同,并不会被初始化。在我们声明他们之前,无法访问,这称为“暂时性死区”, 在我们尝试声明变量之前访问变量时,javaScript会抛出ReferenceError
题10 (yield)
下面输出的是
答案:1 2 3
这道题主要考察:
- yield:yield* 表达式用于委托给另一个generator 或可迭代对象, range函数返回一个包含着Promise{1}, Promise{2}, Promise{3}的迭代器,然后用for await输出迭代器的异步结果,也就是三个resolve的结果,即为1 2 3







