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 前端开发
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
169 0
JavaScript 入门基础 - 运算符(三)
|
存储 JSON JavaScript
JavaScript 入门基础 - 变量 / 数据类型(二)
JavaScript 入门基础 - 变量 / 数据类型(二)
118 0
JavaScript 入门基础 - 变量 / 数据类型(二)
|
JavaScript 前端开发 物联网
JavaScript 入门基础 / 概念介绍(一)
JavaScript 入门基础 / 概念介绍(一)
154 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模块
115 0
|
JavaScript 前端开发
原生js制作选项卡详解,适合无基础的人学习
原生js制作选项卡详解,适合无基础的人学习
153 0
|
JavaScript 前端开发
vue js文字跑马灯基础版本
提供两种解决思路
305 1
|
存储 JavaScript 前端开发
JavaScript基础(一篇入门)
JavaScript基础(一篇入门)
236 0
JavaScript基础(一篇入门)
|
XML JavaScript 前端开发
计算机二级web题目(5)--js(Javascript)基础
计算机二级web题目(5)--js(Javascript)基础
303 0
|
JSON 缓存 JavaScript
JS基础篇(前端面试题整合)(一)
JS基础篇(前端面试题整合)(一)
146 0

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    45
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    28
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55