这是我参与更文挑战的第13天,活动详情查看:更文挑战
146. 输出是什么?
function getFruit(fruits) {
console.log(fruits?.[1]?.[1])
}
getFruit([['?', '?'], ['?']])
getFruit()
getFruit([['?'], ['?', '?']])
复制代码
答:D,本题主要考察的是可选链操作符,只要不存在返回的是undefined,所以选D。
147. 输出什么?
class Calc {
constructor() {
this.count = 0
}
increase() {
this.count ++
}
}
const calc = new Calc()
new Calc().increase()
console.log(calc.count)
复制代码
答:A,本题调用increase的对象和calc不是同一个对象,所以答案还是0.
148. 输出什么?
const user = {
email: "e@mail.com",
password: "12345"
}
const updateUser = ({ email, password }) => {
if (email) {
Object.assign(user, { email })
}
if (password) {
user.password = password
}
return user
}
const updatedUser = updateUser({ email: "new@email.com" })
console.log(updatedUser === user)
复制代码
答:B,本题中并未对user这个对象的地址进行修改,只是对内部进行了修改,所以updatedUser和user地址相同。
149. 输出什么?
const fruit = ['?', '?', '?']
fruit.slice(0, 1)
fruit.splice(0, 1)
fruit.unshift('?')
console.log(fruit)
复制代码
答:C,本题就是考查我们对常用API的熟系程度,splice会对原数组产生副作用,unshift则是在数组最前面添加元素,所以答案是C。
150. 输出什么?
const animals = {};
let dog = { emoji: '?' }
let cat = { emoji: '?' }
animals[dog] = { ...dog, name: "Mara" }
animals[cat] = { ...cat, name: "Sara" }
console.log(animals[dog])
复制代码
答:B,用一个对象作为键,底层存储的是”object Object”,所以这样看来,dog和cat在animals的键是相同的,所以cat对应的值能够覆盖dog,所以选B。
151. 输出什么?
const user = {
email: "my@email.com",
updateEmail: email => {
this.email = email
}
}
user.updateEmail("new@email.com")
console.log(user.email)
复制代码
答:A,本题考查的是箭头函数this指向的问题,此时this指向的是全局对象,由于全局没有email这个属性,所以会报错:
152. 输出什么?
const promise1 = Promise.resolve('First')
const promise2 = Promise.resolve('Second')
const promise3 = Promise.reject('Third')
const promise4 = Promise.resolve('Fourth')
const runPromises = async () => {
const res1 = await Promise.all([promise1, promise2])
const res2 = await Promise.all([promise3, promise4])
return [res1, res2]
}
runPromises()
.then(res => console.log(res))
.catch(err => console.log(err))
复制代码
答:D,本题主要考察我们对Promise.all的了解,只要接收到了一个reject,直接将异步结果返回给捕捉错误的回调函数,所以直接打印Third.
153. 哪个作为method的值可以打印{ name: “Lydia”, age: 22 }?
const keys = ["name", "age"]
const values = ["Lydia", 22]
const method = /* ?? */
Object[method](keys.map((_, i) => {
return [keys[i], values[i]]
})) // { name: "Lydia", age: 22 }
复制代码
答:C,本题主要是考查我们是否知道如何将二维数组转换为对象,可以通过C这个API,
154. 输出什么?
const createMember = ({ email, address = {}}) => {
const validEmail = /.+\@.+\..+/.test(email)
if (!validEmail) throw new Error("Valid email pls")
return {
email,
address: address ? address : null
}
}
const member = createMember({ email: "my@email.com" })
console.log(member)
复制代码
答:C,本题需要知道一点,那就是空对象属于真值,所以在返回对象的时候,address并不是返回null,而是返回的{}.
155. 输出什么?
let randomValue = { name: "Lydia" }
randomValue = 23
if (!typeof randomValue === "string") {
console.log("It's not a string!")
} else {
console.log("Yay it's a string!")
}
复制代码
答:B,首先我们要知道本题的运算优先级,首先会计算typeof randomValue,这回返回一个”number”,这是一个字符串,对字符串取反,返回false,false并不等于”string”,所以最后输出的是else对应的语句,”Yay it’s a string!”。
题目来源
完结散花,至此《155个JavaScript基础问题》全部更新完毕,全部收录在专栏中。
相信努力的力量,相信坚持的力量,相信积累的力量!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END