155个JavaScript基础问题(146-155)

简介: 155个JavaScript基础问题(146-155)

这是我参与更文挑战的第13天,活动详情查看:更文挑战

146. 输出是什么?

function getFruit(fruits) {
  console.log(fruits?.[1]?.[1])
}
getFruit([['🍊', '🍌'], ['🍍']])
getFruit()
getFruit([['🍍'], ['🍊', '🍌']])

image.png

答:D,本题主要考察的是可选链操作符,只要不存在返回的是undefined,所以选D。

147. 输出什么?

class Calc {
  constructor() {
    this.count = 0 
  }
  increase() {
    this.count ++
  }
}
const calc = new Calc()
new Calc().increase()
console.log(calc.count)


image.png

答: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)


image.png

答:B,本题中并未对user这个对象的地址进行修改,只是对内部进行了修改,所以updatedUser和user地址相同。

149. 输出什么?

const fruit = ['🍌', '🍊', '🍎']
fruit.slice(0, 1)
fruit.splice(0, 1)
fruit.unshift('🍇')
console.log(fruit)

image.png

答: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])


image.png


答: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)

答:D,本题考查的是箭头函数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)

image.png

答: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!")
}

image.png

答:B,首先我们要知道本题的运算优先级,首先会计算typeof randomValue,这回返回一个"number",这是一个字符串,对字符串取反,返回false,false并不等于"string",所以最后输出的是else对应的语句,"Yay it's a string!"。

相关文章
|
JavaScript
JS基础之解构赋值
解构赋值 在js中,我们经常会将对象或者数组里面的一部分数据作为参数传递给函数,如果我们使用传统的.方法会很麻烦。
|
JavaScript 前端开发
JavaScript 入门基础 - 运算符(三)
文章目录 JavaScript 入门基础 - 运算符(三) 1.什么是运算符 2.表达式和返回值 3.算术运算符概述 4. 赋值运算符 5.递增和递减运算符 5.1 递增和递减运算符概述 5.2 递增运算符 5.2.1 前置递增运算符 5.2.2 后置递增运算符 5.2.3 后置和前置运算符的区别 6. 比较运算符 7. 逻辑运算符 7.1 逻辑运算符概述 7.2 逻辑与 7.3 逻辑或 7.4
121 0
JavaScript 入门基础 - 运算符(三)
|
存储 JSON JavaScript
JavaScript 入门基础 - 变量 / 数据类型(二)
JavaScript 入门基础 - 变量 / 数据类型(二)
87 0
JavaScript 入门基础 - 变量 / 数据类型(二)
|
JavaScript 前端开发 物联网
JavaScript 入门基础 / 概念介绍(一)
JavaScript 入门基础 / 概念介绍(一)
112 0
JavaScript 入门基础 / 概念介绍(一)
|
JavaScript 前端开发 Java
JavaScript的基础使用
JavaScript的基础 一、javascript简介 JavaScript简称js,最初由网景(现在的Mozilla)公司创建,由于商标冲突原因,其标准版本命名为ECMAScript,但是一般人们还是叫JavaScript,只在谈标准的时候说到ECMAScript这个名字。值得注意的是JavaScript与java没有任何关系,就像雷峰塔(神话中镇压白娘子的塔)和雷锋。此外js(JavaScript)和jsp(java servlet pages)也没有关系。   js的工作分为两部分,一部分属于js语言本身的特性,而另一部需要依靠宿主环境(web浏览器)才能完成。 二、javascri
JavaScript的基础使用
|
JavaScript 前端开发
js 模块化基础和模块规范AMD、CMD、ES6模块
js 模块化基础和模块规范AMD、CMD、ES6模块
83 0
|
JavaScript 前端开发
原生js制作选项卡详解,适合无基础的人学习
原生js制作选项卡详解,适合无基础的人学习
109 0
原生js制作选项卡详解,适合无基础的人学习
|
JavaScript 前端开发
vue js文字跑马灯基础版本
提供两种解决思路
253 1
|
存储 JavaScript 前端开发
JavaScript基础(一篇入门)
JavaScript基础(一篇入门)
185 0
JavaScript基础(一篇入门)
|
XML JavaScript 前端开发
计算机二级web题目(5)--js(Javascript)基础
计算机二级web题目(5)--js(Javascript)基础
252 0