31. 当点击按钮时,event.target是什么?
<div onclick="console.log('first div')">
<div onclick="console.log('second div')">
<button onclick="console.log('button')">
Click!
</button>
</div>
</div>
答:C,触发事件的对象的引用是button.
32. 单击该段落时,输出是什么?
<div onclick="console.log('div')">
<p onclick="console.log('p')">
Click here!
</p>
</div>
答:A,本题考查的是事件冒泡。
33. 输出是什么?
const person = { name: 'Lydia' }
function sayHi(age) {
console.log(`${this.name} is ${age}`)
}
sayHi.call(person, 21)
sayHi.bind(person, 21)
答:D,本题之所以选D的原因在于,call是立即执行的,bind返回一个函数。
34. 输出是什么?
function sayHi() {
return (() => 0)()
}
typeof sayHi()
答:B,这是因为sayHi函数返回的是一个立即执行函数的结果,所以返回的是0,0属于number类型的。
35. 下面哪些值是假值?
0
new Number(0)
('')
(' ')
new Boolean(false)
undefined
答:A,首先我们要明确一点,new Number和new Boolean都不是字面量了,而是一个对象,所以他们不等价于假值,’’ 和 ’ '这两个也不一样,一个是空串可以表示假值,但是另一个是空格,不代表假值,所以本题选A。
36. 输出是什么?
console.log(typeof typeof 1)
答:B,这题有点坑,是因为typeof 1返回的是字符串 “number”,这也就是为什么再次typeof返回的是string了。
37. 输出是什么?
const numbers = [1, 2, 3]
numbers[10] = 11
console.log(numbers)
答:C,当给超过数组长度的位置设置值的时候,其实中间都是undefined,打印出来就像下面这样。
38. 输出是什么?
(() => {
let x, y
try {
throw new Error()
} catch (x) {
(x = 1), (y = 2)
console.log(x)
}
console.log(x)
console.log(y)
})()
答:A,这道题主要是想考察catch会形成一个块级作用域,catch中接收到的x和let 定义的x不是同一个,但是catch中操作的y是同一个,这也就是为什么返回的是1 undefined 2的原因了。
39. JavaScript中的一切都是什么?
答:A,这道题我原本想选C来着,但是仔细想想单纯的字面量必须要归为一类。
40. 输出是什么?
[[0, 1], [2, 3]].reduce(
(acc, cur) => {
return acc.concat(cur)
},
[1, 2]
)
答:C,这题没有什么坑,关键就是看清一点,使用reduce之前给了初始值[1,2].
题目来源
https://github.com/lydiahallie/javascript-questions