知识库【二】

1、下面代码的输出是什么?


function checkAge(age) {	
  if (age < 18) {	
    const message = "Sorry, you're too young."	
  } else {	
    const message = "Yay! You're old enough!"	
  }	
  return message	
}	
console.log(checkAge(21))
  • A: "Sorry, you're too young."

  • B: "Yay! You're old enough!"

  • C: ReferenceError

  • D: undefined

答案: C

const和 let声明的变量是具有块级作用域的,块是大括号( {})之间的任何东西, 即上述情况 if/else语句的花括号。由于块级作用域,我们无法在声明的块之外引用变量,因此抛出 ReferenceError

2、什么样的信息将被打印?

fetch('https://www.website.com/api/user/1')	
  .then(res => res.json())	
  .then(res => console.log(res))
  • A: fetch方法的结果

  • B: 第二次调用 fetch方法的结果

  • C: 前一个 .then()中回调方法返回的结果

  • D: 总是 undefined

答案: C

第二个 .then中 res的值等于前一个 .then中的回调函数返回的值。你可以像这样继续链接 .then,将值传递给下一个处理程序。

3、下面代码输出什么?


let newList = [1, 2, 3].push(4)	
console.log(newList.push(5))
  • A: [1,2,3,4,5]

  • B: [1,2,3,5]

  • C: [1,2,3,4]

  • D: Error

答案: D

.push方法返回数组的长度,而不是数组本身!通过将 newList设置为 [1,2,3].push(4),实际上 newList等于数组的新长度:4

然后,尝试在 newList上使用 .push方法。由于 newList是数值 4,抛出TypeError。

4、下面代码输出什么?

function giveLydiaPizza() {	
  return "Here is pizza!"	
}	
const giveLydiaChocolate = () => "Here's chocolate... now go hit the gym already."	
console.log(giveLydiaPizza.prototype)	
console.log(giveLydiaChocolate.prototype)
  • A: {constructor:...} {constructor:...}

  • B: {} {constructor:...}

  • C: {constructor:...} {}

  • D: {constructor:...} undefined

答案: D

常规函数,例如 giveLydiaPizza函数,有一个 prototype属性,它是一个带有 constructor属性的对象(原型对象)。然而,箭头函数,例如 giveLydiaChocolate函数,没有这个 prototype属性。尝试使用 giveLydiaChocolate.prototype访问 prototype属性时会返回 undefined

5、下面代码输出什么?


function getItems(fruitList, ...args, favoriteFruit) {	
  return [...fruitList, ...args, favoriteFruit]	
}	
getItems(["banana", "apple"], "pear", "orange")
  • A: ["banana","apple","pear","orange"]

  • B: [["banana","apple"],"pear","orange"]

  • C: ["banana","apple",["pear"],"orange"]

  • D: SyntaxError

答案: D

...args是剩余参数,剩余参数的值是一个包含所有剩余参数的数组,并且只能作为最后一个参数。上述示例中,剩余参数是第二个参数,这是不可能的,并会抛出语法错误。

6、下面代码输出什么?

const info = {	
  [Symbol('a')]: 'b'	
}	
console.log(info)	
console.log(Object.keys(info))
  • A: {Symbol('a'):'b'} and ["{Symbol('a')"]

  • B: {} and []

  • C: {a:"b"} and ["a"]

  • D: {Symbol('a'):'b'} and []

答案: D

Symbol类型是不可枚举的。Object.keys方法返回对象上的所有可枚举的键属性。Symbol类型是不可见的,并返回一个空数组。记录整个对象时,所有属性都是可见的,甚至是不可枚举的属性。

这是 Symbol的众多特性之一:除了表示完全唯一的值(防止对象意外名称冲突,例如当使用2个想要向同一对象添加属性的库时),您还可以 隐藏这种方式对象的属性(尽管不完全。你仍然可以使用 Object.getOwnPropertySymbols()方法访问 Symbol

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值