Advertisement

这些前端大厂面试题你会做吗?每日10题大厂面试题(六)

阅读量:

文章目录

  • 问题一涉及多余的输入参数
  • 问题二考察了两个概念:NaN 和 Number.isNaN
  • 错误类型为 TypeError
  • 程序会自动拼接分号
  • 变量引用使用特殊字符 Symbol
  • 程序遇到引用未定义的变量会导致 ReferenceError
  • 程序涉及基于数组原型的行为模式

题1(剩余参数)

下面输出的是

复制代码
    function getItems(fruitList, ...args, favoriteFruit) {
    	return [...fruitList, ...args, favoriteFruit]
    }
    getItems(['banana', 'apple'], 'pear', 'orange')
    
    
      
      
      
      
    
    代码解读

答案:SyntaxError
这道题考察的是:

多余自定义选项:…args表示多余的自定义选项。这些多余自定义选项会被存储在一个数组中,并且它们仅允许作为程序运行时的一个额外选项存在。例如,在之前的示例中,多余自定义选项被指定为第二个位置。这意味着这种设置是不可能实现的,并会在编译过程中引发语法错误。

题2(NaN, Number.isNaN)

下面输出的是:

复制代码
    const name = 'Lydia Hallie';
    const age = 21;
    
    console.log(Number.isNaN(name))
    console.log(Number.isNaN(age))
    
    console.log(isNaN(name))
    console.log(isNaN(age))
    
    
      
      
      
      
      
      
      
      
    
    代码解读

答案:false false true false
这道题考察的是:

  • NaN属性被定义为表示非数值的一种特殊属性...在JavaScript中,默认情况下所有数值型变量都会被初始化为其默认初始状态...将Number对象赋以该数值,则表示其不是一个有效的数。
    • Number.isNan函数用于判断所传参数是否是数值类型并且等于 NaN。
      方法isNaN也被用来判断一个参数是否是非有效的数。

题3(TypeError)

下面输出的是:

复制代码
    const name = 'Lydia'
    console.log(name())
    
    
      
      
    
    代码解读

答案:TypeError
这道题主要考察:

TypeError: The variable name does not refer to a callable object.

题4(自动分号插入)

下面输出的是

复制代码
    function nums(a, b) {
    	if
    	(a > b)
    	console.log('a is bigger')
    	else
    	console.log('b is bigger')
    	return 
    	a + b
    }
    console.log(nums(4, 2))
    console.log(nums(1, 2))
    
    
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

答案:a is bigger, undefined and b is bigger, undefined
这道题主要考察:

在JavaScript中,在编程语言中无需显式地编写分号(;),但JavaScript引擎会自动在每个语句后添加一个分号。在此处,在一个新的行上依次编写了一个return语句和一个值a+b。需要注意的是,在这种情况下,引擎会在return后添加一个分号而不是直接执行a+b运算的结果。因此,在这种情况下永远不会到达a+b的位置。

题5(Symbol)

下面输出的是

复制代码
    const info = {
    	[Symbol('a')]: b
    }
    console.log(info)
    console.log(Object.keys(info))
    
    
      
      
      
      
      
    
    代码解读

答案:{Symbol(‘a’): ‘b’} and []
这道题主要考察:

  • Symbol: 每个标识符都赋予了其对应的对象一个独一无二且无法被其他标识符替代的价值。
  • Symbol类型的标识符是非可计数存在的。
  • 在获取对象信息时,默认情况下Object.keys方法会检索并返回所有存在于对象中的可计数键属性。
  • 但是,在某些特定情况下(如使用符号引用或特殊场景),符号标识符本身不会暴露于外界,并始终为空。
  • 当完整记录整个对象时,则会包含所有显式的和隐式的属性信息。

题8(ReferenceError)

下面输出的是

复制代码
    const {name: myName} = {name: 'Lydia'}
    console.log(name)
    
    
      
      
    
    代码解读

答案:ReferenceError
这道题主要考察:

在将对象解构赋值给myName时,在name属性上出现了问题。这是因为name是一个未声明的属性,在访问它时会引发Uncaught ReferenceError抛出。

题10(Array.prototype)

下面哪些方法修改了原数组

复制代码
    const emojis = [1, 2, 3]
    emojis.map(x => x + 1)
    emojis.filter(x => x !== 2)
    emojis.find(x => x !== 2)
    emojis.reduce((acc, cur) => acc + 3)
    emojis.slice(1, 2, 1)
    emojis.splice(1, 2, 1)
    
    
      
      
      
      
      
      
      
    
    代码解读

答案:splice
这道题主要考察:

  • Array.prototype:在Array.prototype中存在修改原始数组的方法,在push、pop、shift、unshift这些用于添加或移除元素的操作之外(注:原文可能存在拼写错误,“unshifit”应为“unshift”),还有reverse和sort这两种用于对数组进行排序的操作以外(同样此处应为逗号分隔);唯一剩下的能够直接修改原始数组的行为便是splice了。

伙伴们今天的共同学习到这里告一段落。觉得本文对你有所帮助的朋友不妨转发分享到朋友圈、微博或微博关注我们。

每天进步一点点就是领先的开始。如果还想进一步提升自己,请随时关注微信公众号祯民讲前端或添加关注点:祯民讲前端

大量前端技术文章面试资料技巧等你来挖掘!丰富的内容助你快速成长!

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~