106. 输出什么?

const colorConfig = {
  red: true,
  blue: false,
  green: true,
  black: true,
  yellow: false,
}

const colors = ["pink", "red", "blue"]

console.log(colorConfig.colors[1])

155个JavaScript基础问题(106-115)_javascript

答:D,JS通过点访问对象属性的时候,会把colors当做一个属性,发现找不到为undefined,然后调用[1]会报错。

107. 输出什么?

console.log('❤️' === '❤️')

155个JavaScript基础问题(106-115)_其他_02

答:A,显然这两个字面量是相等的。

108. 那些方法修改了原数组?

const emojis = ['✨', '????', '????']

emojis.map(x => x + '✨')
emojis.filter(x => x !== '????')
emojis.find(x => x !== '????')
emojis.reduce((acc, cur) => acc + '✨')
emojis.slice(1, 2, '✨') 
emojis.splice(1, 2, '✨')

155个JavaScript基础问题(106-115)_json字符串_03

答:map,filter,slice返回的是新数组,find返回的是数组中的某个元素,reduce返回的是一个值,只有splice是对原数组产生了更改。

109. 输出什么?

const food = ['????', '????', '????', '????']
const info = { favoriteFood: food[0] }

info.favoriteFood = '????'

console.log(food)

155个JavaScript基础问题(106-115)_json字符串_04

答:A,上述代码只是修改了info中的值,并未对food对象产生任何影响。

110. 下面的函数干了什么?

JSON.parse()

155个JavaScript基础问题(106-115)_其他_05

答:A,这个题就看我们对JS中常用API的了解程度了,就是将JSON字符串转换为对应的JavaScript值。

111. 输出什么?

let name = 'Lydia'

function getName() {
  console.log(name)
  let name = 'Sarah'
}

getName()

155个JavaScript基础问题(106-115)_json字符串_06

答:D,本题中let存在变量声明的提升,但是并未进行初始化,此时存在暂时性死区,在暂时性死区中调用let定义的变量会报错,所以选D。

112. 输出什么?

function* generatorOne() {
  yield ['a', 'b', 'c'];
}

function* generatorTwo() {
  yield* ['a', 'b', 'c'];
}

const one = generatorOne()
const two = generatorTwo()

console.log(one.next().value)
console.log(two.next().value)

155个JavaScript基础问题(106-115)_javascript_07

答:C,本题中的两个函数猛一看没区别,实际上第二个函数多了一个*号,所以调用第二个函数的next().value返回的其实是一个元素,所以本题选C。

113. 输出什么?

console.log(`${(x => x)('I love')} to program`)

155个JavaScript基础问题(106-115)_数组_08

答:A,本题的模板字符串大括号中是一个立即执行函数,所以打印的结果是A。

114. 下面的函数将会发生什么?

let config = {
  alert: setInterval(() => {
    console.log('Alert!')
  }, 1000)
}

config = null

155个JavaScript基础问题(106-115)_其他_09

答:C,这是因为循环定时器中的参数是一个箭头函数,箭头函数中的上下文绑定到config了,通过赋值为null,回调函数仍然保留着对config的引用,所以循环定时器不会停止,仍然是每隔1秒继续打印,可以通过clear的方式取消掉这个循环定时器。

115. 下面哪一个方法会返回’Hello World!’?

const myMap = new Map()
const myFunc = () => 'greeting'

myMap.set(myFunc, 'Hello world!')

//1
myMap.get('greeting')
//2
myMap.get(myFunc)
//3
myMap.get(() => 'greeting')

155个JavaScript基础问题(106-115)_数组_10

答:B,首先我们要明确一点,Map中值为Hello world!的键是myFunc的地址引用,1,2,3中只有第二个键是myFunc的地址引用,3是一个新地址,所以选B。

题目来源

https://github.com/lydiahallie/javascript-questions